ATOMS: homogenize function's profile
[scilab.git] / scilab / modules / atoms / macros / atoms_internals / atomsToolboxDetails.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2009 - DIGITEO - Pierre MARECHAL <pierre.marechal@scilab.org>
3 //
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution.  The terms
7 // are also available at
8 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
9
10 // Return the mlist associated with the wanted toolbox
11
12 function details = atomsToolboxDetails(package,field)
13         
14         rhs = argn(2);
15         
16         // Check number of input arguments
17         // =========================================================================
18         
19         if rhs < 1 | rhs > 2 then
20                 error(msprintf(gettext("%s: Wrong number of input argument: %d to %d expected.\n"),"atomsToolboxDetails",1,2));
21         end
22         
23         // Check input parameters type
24         // =========================================================================
25         
26         if type(package) <> 10 then
27                 error(msprintf(gettext("%s: Wrong type for input argument #%d: String array expected.\n"),"atomsToolboxDetails",1));
28         end
29         
30         if rhs>1 & type(field)<>10 then
31                 error(msprintf(gettext("%s: Wrong type for input argument #%d: A single string expected.\n"),"atomsToolboxDetails",2));
32         end
33         
34         // Check input parameters dimensions
35         // =========================================================================
36         
37         if or(size(package) <> [1 2]) then
38                 error(msprintf(gettext("%s: Wrong size for input argument #%d: 1x2 string matrix expected.\n"),"atomsToolboxDetails",1));
39         end
40         
41         if rhs>1 & size(field,"*") <> 1 then
42                 error(msprintf(gettext("%s: Wrong size for input argument #%d: A single string expected.\n"),"atomsToolboxDetails",2));
43         end
44         
45         // Get the full list of packages
46         // =========================================================================
47         repositorypackages = atomsGetTOOLBOXES();
48         
49         name    = package(1);
50         version = package(2);
51         
52         if ~ isfield(repositorypackages,name) then
53                 if ~ atomsIsInstalled(package) then
54                         // The module is not (or no more) present on the repository and not installed
55                         // => in a nutshell, unknown
56                         error(msprintf(gettext("%s: the package ''%s'' doesn''t exist.\n"),"atomsToolboxDetails",name));
57                 else
58                         // The module has been removed from the repository but it's still 
59                         // installed
60                         repositorypackages = atomsDESCRIPTIONread(atomsGetInstalledPath(package)+filesep()+"DESCRIPTION");
61                 end
62         end
63         
64         package_versions = repositorypackages(name);
65         
66         if ~ isfield(package_versions,version) then
67                 error(msprintf(gettext("%s: the package ''%s'' doesn''t exist.\n"),"atomsToolboxDetails",name+" - "+version));
68         end
69         
70         details = package_versions(version);
71         
72         // A field is gived :
73         // =========================================================================
74         
75         if rhs>=2 then
76                 
77                 if ~ isfield(details,field) then
78                         error(msprintf(gettext("%s: the package ''%s'' doesn''t contain the field ''%s''.\n"),"atomsToolboxDetails",name+" - "+version,field));
79                 end
80                 
81                 details = details(field);
82                 
83                 return;
84         end
85         
86         // Check if this version is installed
87         // =========================================================================
88         
89         if atomsIsInstalled([name version]) then
90                 
91                 installedDetails = atomsGetInstalledDetails(package);
92                 details("installAlluser") = installedDetails(3);
93                 details("installPath")    = installedDetails(4);
94                 details("installStatus")  = installedDetails(5);
95                 
96         end
97         
98 endfunction