Atoms 0.2
[scilab.git] / scilab / modules / atoms / macros / atomsRemove.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2008 - INRIA - Delphine GASC <delphine.gasc@scilab.org>
3 // Copyright (C) 2009 - DIGITEO - Sylvestre LEDRU <sylvestre.ledru@scilab.org>
4 // Copyright (C) 2009 - DIGITEO - Pierre MARECHAL <pierre.marechal@scilab.org>
5 //
6 // This file must be used under the terms of the CeCILL.
7 // This source file is licensed as described in the file COPYING, which
8 // you should have received as part of this distribution.  The terms
9 // are also available at
10 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
11
12 // End user function
13
14 // Remove of a toolbox
15
16 function result = atomsRemove(name)
17   rhs=argn(2);
18
19   if rhs == 1 then
20   rep = atomsToolboxDirectory()
21   // If name = "all" we delete all the Toolboxes
22   if name == "all"  
23     rmdir(rep, "s")
24     mkdir(rep)
25   else
26     // we check the existence of the toolbox
27     d = rep + name
28     if ~isdir(d)
29       atomsDisplayMessage(sprintf(_("The toolbox %s is not installed.\n"),name))
30       result = %f
31       return result
32     end
33     cd (rep)
34     // We check if the toolbox is not a dependency of another toolboxes
35     listLocal = ls()
36     [n, m] = size(listLocal)
37     for i=1:n
38         desc = atomsReadDesc(listLocal(i))
39         depends = atomsExtractValue("Depends", desc, 1)
40         depends = atomsSplitValue(depends, ",")
41         [n, m] = size(depends)
42         for j=1:n
43           [depend, version] = atomsSeparateVersionDep(depends(j))
44           if find(depend == name) <> []
45             repQuestion = atomsButtonYesNo("The Toolbox " + name + " is a dependency of " + listLocal(i) + ". Continue?")
46             if (repQuestion == "2")
47               result = %f
48               return result
49             end
50           end
51       end
52     end
53     rmdir(rep + name, "s")
54     atomsDisplayMessage(name + " delete")
55     result = %t
56     return result
57   end
58   else
59     error(msprintf(gettext("%s: Wrong number of input argument: %d expected.\n"),"atomsRemove",1));
60   end
61
62 endfunction
63
64 function result = atomsButtonYesNo(message)
65         if (getscilabmode() == "STD")
66                 result = buttondialog(message,"Yes|No","question")
67         else
68                 response = input(message + " [""y""/""n""]")
69                 if (response <> "y" & response <> "Y")
70                         result = "2"
71                 else
72                         result = "1"
73                 end
74         end
75         return result
76 endfunction