ATOMS: atomsRepositoryXXX: Better management of "allusers"/"user" sections
[scilab.git] / scilab / modules / atoms / macros / atomsRepositoryList.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 // get the list of repositories
11
12 function repositories = atomsRepositoryList(section)
13         
14         // Load Atoms Internals lib if it's not already loaded
15         // =========================================================================
16         if ~ exists("atomsinternalslib") then
17                 load("SCI/modules/atoms/macros/atoms_internals/lib");
18         end
19         
20         rhs           = argn(2);
21         repositories  = [];
22         
23         // Check number of input arguments
24         // =========================================================================
25         
26         if rhs > 1 then
27                 error(msprintf(gettext("%s: Wrong number of input argument: %d to %d expected.\n"),"atomsRepositoryList",0,1));
28         end
29         
30         // Check input argument type (if any)
31         // =========================================================================
32         
33         if (rhs==1) & (type(section) <> 10) then
34                 error(msprintf(gettext("%s: Wrong type for input argument #%d: Single string expected.\n"),"atomsRepositoryList",1));
35         end
36         
37         // Check input argument dimension (if any)
38         // =========================================================================
39         
40         if (rhs==1) & (size(section,"*")<>1) then
41                 error(msprintf(gettext("%s: Wrong size for input argument #%d: Single string expected.\n"),"atomsRepositoryList",1));
42         end
43         
44         // Check input argument values (if any)
45         // =========================================================================
46         
47         if (rhs==1) & (and(section<>["all","user","allusers","official"])) then
48                 error(msprintf(gettext("%s: Wrong value for input argument #%d: ''all'',''user'',''allusers'' or ''official'' expected.\n"),"atomsRepositoryList",1));
49         end
50         
51         // Default value of section
52         // =========================================================================
53         
54         if rhs==0 then
55                 section = "all";
56         end
57         
58         // Define the needed paths
59         // =========================================================================
60         
61         official_repositories = pathconvert(SCI+"/modules/atoms/etc/repositories",%F);
62         allusers_repositories = pathconvert(SCI+"/.atoms/repositories",%F);
63         user_repositories     = pathconvert(SCIHOME+"/atoms/repositories",%F);
64         
65         // official repositories
66         // =========================================================================
67         
68         if or(section == ["all";"official"]) then
69                 if fileinfo(official_repositories) <> [] then
70                         url_list = mgetl(official_repositories);
71                         for i=1:size(url_list,"*")
72                                 repositories = [ repositories ; url_list(i)  "official" ];
73                         end
74                 end
75         end
76         
77         // All users repositories
78         // =========================================================================
79         
80         if or(section == ["all";"allusers"]) then
81                 if fileinfo(allusers_repositories) <> [] then
82                         url_list = mgetl(allusers_repositories);
83                         for i=1:size(url_list,"*")
84                                 repositories = [ repositories ; url_list(i)  "allusers" ];
85                         end
86                 end
87         end
88         
89         // User repositories
90         // =========================================================================
91         
92         if or(section == ["all";"user"]) then
93                 if fileinfo(user_repositories) <> [] then
94                         url_list = mgetl(user_repositories);
95                         for i=1:size(url_list,"*")
96                                 repositories = [ repositories ; url_list(i)  "user" ];
97                         end
98                 end
99         end
100         
101 endfunction