84cf0aa341e85ec00200a37b94e1af3087210a48
[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(name,version,field)
13         
14         rhs = argn(2);
15         
16         // Check number of input arguments
17         // =========================================================================
18         
19         if rhs < 2 | rhs > 3 then
20                 error(msprintf(gettext("%s: Wrong number of input argument: %d to %d expected.\n"),"atomsToolboxDetails",2,3));
21         end
22         
23         // Check input parameters type
24         // =========================================================================
25         
26         if type(name) <> 10 then
27                 error(msprintf(gettext("%s: Wrong type for input argument #%d: A single string expected.\n"),"atomsToolboxDetails",1));
28         end
29         
30         if type(version)<>10  then
31                 error(msprintf(gettext("%s: Wrong type for input argument #%d: A single string expected.\n"),"atomsToolboxDetails",2));
32         end
33         
34         if rhs>2 & type(field)<>10 then
35                 error(msprintf(gettext("%s: Wrong type for input argument #%d: A single string expected.\n"),"atomsToolboxDetails",3));
36         end
37         
38         // Check input parameters dimensions
39         // =========================================================================
40         
41         if size(name,"*") <> 1 then
42                 error(msprintf(gettext("%s: Wrong size for input argument #%d: A single string expected.\n"),"atomsToolboxDetails",1));
43         end
44         
45         if size(version,"*") <> 1 then
46                 error(msprintf(gettext("%s: Wrong size for input argument #%d: A single string expected.\n"),"atomsToolboxDetails",2));
47         end
48         
49         if rhs>2 & size(field,"*") <> 1 then
50                 error(msprintf(gettext("%s: Wrong size for input argument #%d: A single string expected.\n"),"atomsToolboxDetails",3));
51         end
52         
53         // Get the list of installed packages
54         // =========================================================================
55         packages = atomsGetTOOLBOXES();
56         
57         if ~ isfield(packages,name) then
58                 if ~ atomsIsInstalled(name,version) then
59                         // The module is not (or no more) present on the repository and not installed
60                         // => in a nutshell, unknown
61                         error(msprintf(gettext("%s: the package ''%s'' doesn''t exist.\n"),"atomsToolboxDetails",name));
62                 else
63                         // The module has been removed from the repository but it's still 
64                         // installed
65                         packages = atomsDESCRIPTIONread(atomsGetInstalledPath(name,version)+filesep()+"DESCRIPTION");
66                 end
67         end
68         
69         package_versions = packages(name);
70         
71         if ~ isfield(package_versions,version) then
72                 error(msprintf(gettext("%s: the package ''%s'' doesn''t exist.\n"),"atomsToolboxDetails",name+" - "+version));
73         end
74         
75         details = package_versions(version);
76         
77         // A field is gived :
78         // =========================================================================
79         
80         if rhs>2 then
81                 
82                 if ~ isfield(details,field) then
83                         error(msprintf(gettext("%s: the package ''%s'' doesn''t contain the field ''%s''.\n"),"atomsToolboxDetails",name+" - "+version,field));
84                 end
85                 
86                 details = details(field);
87                 
88                 return;
89         end
90         
91         // Check if this version is installed
92         // =========================================================================
93         
94         if atomsIsInstalled(name,version) then
95                 
96                 installedDetails = atomsGetInstalledDetails(name,version);
97                 details("installAlluser") = installedDetails(3);
98                 details("installPath")    = installedDetails(4);
99                 details("installStatus")  = installedDetails(5);
100                 
101         end
102         
103 endfunction