625e8bd60dbb2019f153d814c86eb00b2dbd5043
[scilab.git] / scilab / modules / atoms / macros / atoms_internals / atomsInstallRegister.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 // Add an URL to the list of repositories, and returns
11
12 function nbAdd = atomsInstallRegister(name,version,allusers)
13         
14         rhs           = argn(2);
15         nbAdd         = 0;
16         installed     = []; // Column vector that contain user repositories
17         
18         // Check number of input arguments
19         // =========================================================================
20         
21         if rhs < 2 | rhs > 3 then
22                 error(msprintf(gettext("%s: Wrong number of input argument: %d to %d expected.\n"),"atomsInstallRegister",2,3));
23         end
24         
25         // Check input parameters type
26         // =========================================================================
27         
28         if type(name) <> 10 then
29                 error(msprintf(gettext("%s: Wrong type for input argument #%d: String array expected.\n"),"atomsInstallRegister",1));
30         end
31         
32         if type(version) <> 10 then
33                 error(msprintf(gettext("%s: Wrong type for input argument #%d: String array expected.\n"),"atomsInstallRegister",2));
34         end
35         
36         // name and version must have the same size
37         // =========================================================================
38         
39         if or( size(name) <> size(version) ) then
40                 error(msprintf(gettext("%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"),"atomsInstallRegister",1,2));
41         end
42         
43         // Apply changes for all users or just for me ?
44         // =========================================================================
45         
46         if rhs == 2 then
47                 // By default, The toolbox is installed for all users (if we have write access of course !)
48                 if atomsAUWriteAccess() then
49                         allusers = %T; 
50                 else
51                         allusers = %F;
52                 end
53         
54         else
55                 // Just check if it's a boolean
56                 if type(allusers) <> 4 then
57                         error(msprintf(gettext("%s: Wrong type for input argument #%d: A boolean expected.\n"),"atomsInstallRegister",2));
58                 end
59                 
60                 // Check if we have the write access
61                 if allusers & ~ atomsAUWriteAccess() then
62                         error(msprintf(gettext("%s: You haven''t write access on this directory : %s.\n"),"atomsInstallRegister",2,pathconvert(SCI+"/.atoms")));
63                 end
64         end
65         
66         // Define the path of the file that will record the change according to
67         // the "allusers" value
68         // =========================================================================
69         
70         if allusers then
71                 atoms_directory = pathconvert(SCI+"/.atoms");
72         else
73                 atoms_directory = pathconvert(SCIHOME+"/atoms");
74         end
75         
76         // Does the atoms_directory exist, if not create it
77         // =========================================================================
78         
79         if ~ isdir(atoms_directory) then
80                 mkdir(atoms_directory);
81         end
82         
83         // Does the SCIHOME/atoms/installed exist, if yes load it
84         // =========================================================================
85         
86         if fileinfo(atoms_directory+"installed") <> [] then
87                 installed = mgetl(atoms_directory+"installed");
88         end
89         
90         // Loop on each URL specified as input argument
91         // =========================================================================
92         
93         for i=1:size(name,"*")
94                 // Add the URL only if it doesn't already exist
95                 if find( installed == name(i)+" - "+version(i) ) == [] then
96                         installed = [ installed ; name(i)+" - "+version(i) ];
97                         nbAdd = nbAdd + 1;
98                 end
99         end
100         
101         // Apply changes
102         // =========================================================================
103         
104         if nbAdd > 0 then
105                 mputl(installed, atoms_directory+"installed");
106         end
107         
108 endfunction