Atoms 0.2
[scilab.git] / scilab / modules / atoms / macros / atomsDelRepository.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 nbDel = atomsDelRepository(url,allusers)
13         
14         rhs                  = argn(2);
15         nbDel                = 0;
16         
17         // Check number of input arguments
18         // =========================================================================
19         
20         if rhs < 1 | rhs > 2 then
21                 error(msprintf(gettext("%s: Wrong number of input argument: %d to %d expected.\n"),"atomsDelRepository",1,2));
22         end
23         
24         // Check URLs specified as first input argument
25         // =========================================================================
26         
27         if type(url) <> 10 then
28                 error(msprintf(gettext("%s: Wrong type for input argument #%d: String array expected.\n"),"atomsDelRepository",1));
29         end
30         
31         // Apply changes for all users or just for me ?
32         // =========================================================================
33         
34         if rhs == 1 then
35                 // By default, add the repository for all users (if we have write access
36                 // of course !)
37                 if atomsAUWriteAccess() then
38                         allusers = %T; 
39                 else
40                         allusers = %F;
41                 end
42         
43         else
44                 // Just check if it's a boolean
45                 if type(allusers) <> 4 then
46                         error(msprintf(gettext("%s: Wrong type for input argument #%d: A boolean expected.\n"),"atomsDelRepository",2));
47                 end
48                 
49                 // Check if we have the write access
50                 if allusers & ~ atomsAUWriteAccess() then
51                         error(msprintf(gettext("%s: You haven''t write access on this directory : %s.\n"),"atomsDelRepository",2,pathconvert(SCI+"/.atoms")));
52                 end
53         end
54         
55         // Define the path of the files that will record the change according to
56         // the "allusers" value and the existence of the latter
57         // =========================================================================
58         
59         atoms_files = [];
60         
61         if fileinfo( pathconvert(SCIHOME+"/atoms/repositories",%F) )<> [] then
62                 atoms_files = [ atoms_files ; pathconvert(SCIHOME+"/atoms/repositories",%F) ];
63         end
64         
65         if allusers & (fileinfo( pathconvert(SCI+"/.atoms/repositories",%F) )<>[]) then
66                 atoms_files = [ atoms_files ; pathconvert(SCI+"/.atoms/repositories",%F) ];
67         end
68         
69         // Loop on each repositories file specified as first input argument
70         // =========================================================================
71         
72         for i=1:size(atoms_files,"*")
73                 
74                 // Get the URLs list in this file
75                 repositories = mgetl(atoms_files(i));
76                 
77                 // Loop on each URL specified as first input argument
78                 for j=1:size(url,"*")
79                         indice = find( repositories == url(j) );
80                         if indice <> [] then
81                                 repositories(indice) = [];
82                                 nbDel = nbDel + 1;
83                         end
84                 end
85                 
86                 if repositories == [] then
87                         mdelete(atoms_files(i));
88                 else
89                         // Apply changes on this file
90                         mputl(repositories,atoms_files(i));
91                 end
92         end
93         
94 endfunction