3dd9ffd36bb7191338fc28b6b9d46463342c9b38
[scilab.git] / scilab / modules / atoms / macros / atoms_internals / atomsGetInstalledDetails.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 // Renvoie les d├ętails sur l'installation d'un package.
11
12 function res = atomsGetInstalledDetails(name,version,section)
13         
14         rhs = argn(2);
15         res = [];
16         
17         // Check number of input arguments
18         // =========================================================================
19         
20         if rhs < 2 | rhs > 3 then
21                 error(msprintf(gettext("%s: Wrong number of input argument: %d to %d expected.\n"),"atomsGetInstalledDetails",2,3));
22         end
23         
24         // Check input parameters type
25         // =========================================================================
26         
27         if type(name) <> 10 then
28                 error(msprintf(gettext("%s: Wrong type for input argument #%d: A single string expected.\n"),"atomsGetInstalledDetails",1));
29         end
30         
31         if type(version)<>10  then
32                 error(msprintf(gettext("%s: Wrong type for input argument #%d: A single string expected.\n"),"atomsGetInstalledDetails",2));
33         end
34         
35         // Check input parameters dimensions
36         // =========================================================================
37         
38         if or( size(name,"*") <> size(version,"*"))  then
39                 error(msprintf(gettext("%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"),"atomsGetInstalledDetails",1,2));
40         end
41         
42         // Allusers/user management
43         // =========================================================================
44         
45         if rhs < 3 then
46                 section = "all";
47         
48         else
49                 
50                 // Process the 2nd input argument : section
51                 // Allusers can be a boolean or equal to "user" or "allusers"
52                 
53                 if type(section) <> 10 then
54                         error(msprintf(gettext("%s: Wrong type for input argument #%d: A boolean or a single string expected.\n"),"atomsGetInstalledDetails",3));
55                 end
56                 
57                 if (type(section) == 10) & and(section<>["user","allusers","all"]) then
58                         error(msprintf(gettext("%s: Wrong value for input argument #%d: ''user'' or ''allusers'' or ''all'' expected.\n"),"atomsGetInstalledDetails",3));
59                 end
60                 
61         end
62         
63         // Get the list of installed packages
64         // =========================================================================
65         packages = atomsGetInstalled(section);
66         
67         // Loop on name
68         // =========================================================================
69         
70         for i=1:size(name,"*")
71                 
72                 // Filter on names
73                 packages_filtered = packages( find(packages(:,1) == name(i)) , : );
74                 
75                 // Filter on versions
76                 packages_filtered = packages_filtered( find(packages_filtered(:,2) == version(i)) , : );
77                 
78                 if ~ isempty(packages_filtered) then
79                         res = [ res ; packages_filtered(1,:) ];
80                 else
81                         res = [ res ; "" "" "" "" "" ];
82                 end
83                 
84         end
85         
86 endfunction