ATOMS: Factorize ATOMS system paths
[scilab.git] / scilab / modules / atoms / macros / atomsAutoloadList.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 modules = atomsAutoloadList(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         modules  = [];
22         
23         // Check number of input arguments
24         // =========================================================================
25         
26         if rhs > 1 then
27                 error(msprintf(gettext("%s: Wrong number of input argument: at most %d expected.\n"),"atomsAutoloadList",1));
28         end
29         
30         // Allusers/user management
31         //   - If Allusers is equal to "all", display both "user" and "allusers" autoload list
32         //       → SCI/.atoms/autoloaded
33         //       → SCIHOME/atoms/autoloaded
34         //   - If Allusers is equal to "allusers",display only "allusers" autoload list
35         //       → SCI/.atoms/autoloaded
36         //   - If Allusers is equal to "user",display only "user" autoload list
37         //       → SCIHOME/atoms/autoloaded
38         // =========================================================================
39         
40         if rhs < 1 then
41                 section = "all";
42         
43         else
44                 
45                 if type(section) <> 10 then
46                         error(msprintf(gettext("%s: Wrong type for input argument #%d: Single string expected.\n"),"atomsAutoloadList",1));
47                 end
48                 
49                 if size(section,"*")<>1 then
50                         error(msprintf(gettext("%s: Wrong size for input argument #%d: Single string expected.\n"),"atomsAutoloadList",1));
51                 end
52                 
53                 if and(section<>["user","allusers","all"]) then
54                         error(msprintf(gettext("%s: Wrong value for input argument #%d: ''user'',''allusers'' or ''all'' expected.\n"),"atomsAutoloadList",1));
55                 end
56                 
57         end
58         
59         // All users autoload
60         // =========================================================================
61         
62         if or(section==["all";"allusers"]) then
63                 autoloaded_file = atomsPath("system","allusers") + "autoloaded";
64                 if fileinfo(autoloaded_file) <> [] then
65                         module_list = mgetl(autoloaded_file);
66                         for i=1:size(module_list,"*")
67                                 modules = [ modules ; module_list(i)  "allusers" ];
68                         end
69                 end
70         end
71         
72         // User repositories
73         // =========================================================================
74         
75         if or(section==["all";"user"]) then
76                 autoloaded_file = atomsPath("system","user") + "autoloaded";
77                 if fileinfo(autoloaded_file) <> [] then
78                         module_list = mgetl(autoloaded_file);
79                         for i=1:size(module_list,"*")
80                                 modules = [ modules ; module_list(i)  "user" ];
81                         end
82                 end
83         end
84         
85 endfunction