a4f002df5e02f87b57b14dc7b21721d65f297f91
[scilab.git] / scilab / modules / atoms / macros / atoms_internals / atomsGetDepChilds.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 // Give the list of packages needed by this package (identified by its name and version)
11
12 function packages = atomsGetDepChilds(name,version,section)
13         
14         rhs      = argn(2);
15         packages = [];
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"),"atomsGetDepChilds",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: String array expected.\n"),"atomsGetDepChilds",1));
29         end
30         
31         if type(version)<>10  then
32                 error(msprintf(gettext("%s: Wrong type for input argument #%d: String array expected.\n"),"atomsGetDepChilds",2));
33         end
34         
35         // Check input parameters dimensions
36         // =========================================================================
37         
38         if size(name,"*") <> 1 then
39                 error(msprintf(gettext("%s: Wrong size for input argument #%d: A single string expected.\n"),"atomsGetDepChilds",1));
40         end
41         
42         if size(version,"*")<>1  then
43                 error(msprintf(gettext("%s: Wrong size for input argument #%d: A single string expected.\n"),"atomsGetDepChilds",2));
44         end
45         
46         // All user management
47         // =========================================================================
48         
49         if rhs < 3 then
50                 section = "all";
51         
52         else
53                 
54                 if type(section) <> 10 then
55                         error(msprintf(gettext("%s: Wrong type for input argument #%d: Single string expected.\n"),"atomsGetDepChilds",3));
56                 end
57                 
58                 if size(section,"*")<>1 then
59                         error(msprintf(gettext("%s: Wrong size for input argument #%d: Single string expected.\n"),"atomsGetDepChilds",3));
60                 end
61                 
62                 if and(section<>["user","allusers","all"]) then
63                         error(msprintf(gettext("%s: Wrong value for input argument #%d: ''user'',''allusers'' or ''all'' expected.\n"),"atomsGetDepChilds",3));
64                 end
65                 
66         end
67         
68         // Load the installed_deps struct
69         // =========================================================================
70         installed_deps = atomsLoadInstalleddeps(section);
71         
72         // If name - version is not a field of the struct, the job is done
73         // =========================================================================
74         
75         if ~ isfield(installed_deps,name+" - "+version) then
76                 return;
77         end
78         
79         // Return the matrix associated with the wanted package (name - version)
80         // =========================================================================
81         
82         packages_list = installed_deps(name+" - "+version);
83         
84         for i=1:size(packages_list,"*")
85                 this_package_name    = part(packages_list(i),1:regexp(packages_list(i),"/\s-\s/","o")-1);
86                 this_package_version = part(packages_list(i),length(this_package_name)+4:length(packages_list(i)));
87                 packages = [ packages ; this_package_name this_package_version ];
88         end
89         
90 endfunction