c26f12cb9a4c19d2775e3a0d05b128cc9d349f5e
[scilab.git] / scilab / modules / atoms / macros / atoms_internals / atomsInstallUnregister.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 // Delete an atoms package from the list of available package
11
12 function nbDel = atomsInstallUnregister(name,version,allusers)
13         
14         rhs                  = argn(2);
15         nbDel                = 0;
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"),"atomsInstallUnregister",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"),"atomsInstallUnregister",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"),"atomsInstallUnregister",2));
33         end
34         
35         // name and version must have the same size
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"),"atomsInstallUnregister",1,2));
40         end
41         
42         // Apply changes for all users or just for me ?
43         // =========================================================================
44         
45         if rhs == 2 then
46                 // By default, add the repository for all users (if we have write access
47                 // 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"),"atomsInstallUnregister",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"),"atomsInstallUnregister",2,pathconvert(SCI+"/.atoms")));
63                 end
64         end
65         
66         // Define the path of the files that will record the change according to
67         // the "allusers" value and the existence of the latter
68         // =========================================================================
69         
70         atoms_files = [];
71         
72         if fileinfo( pathconvert(SCIHOME+"/atoms/installed",%F) )<> [] then
73                 atoms_files = [ atoms_files ; pathconvert(SCIHOME+"/atoms/installed",%F) ];
74         end
75         
76         if allusers & (fileinfo( pathconvert(SCI+"/.atoms/installed",%F) )<>[]) then
77                 atoms_files = [ atoms_files ; pathconvert(SCI+"/.atoms/installed",%F) ];
78         end
79         
80         // Loop on each installed file specified as first input argument
81         // =========================================================================
82         
83         for i=1:size(atoms_files,"*")
84                 
85                 // Get the installed package list in this file
86                 installed = mgetl(atoms_files(i));
87                 
88                 // Loop on each URL specified as first input argument
89                 for j=1:size(name,"*")
90                         indice = find( installed == name(j)+" - "+version(j) );
91                         if indice <> [] then
92                                 installed(indice) = [];
93                                 nbDel = nbDel + 1;
94                         end
95                 end
96                 
97                 if installed == [] then
98                         mdelete(atoms_files(i));
99                 else
100                         // Apply changes on this file
101                         mputl(installed,atoms_files(i));
102                 end
103         end
104         
105 endfunction