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