add ilib_language to retrieve compiler capabilities
[scilab.git] / scilab / modules / modules_manager / macros / tbx_build_cleaner.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2010 - DIGITEO - Pierre MARECHAL
3 // Copyright (C) 2009-2012 - DIGITEO - Allan CORNET
4 // Copyright (C) 2016 - Scilab Enterprises - Pierre-Aimé AGNEL
5 // Copyright (C) 2016 - Samuel GOUGEON
6 //
7 // Copyright (C) 2012 - 2016 - Scilab Enterprises
8 //
9 // This file is hereby licensed under the terms of the GNU GPL v2.0,
10 // pursuant to article 5.3.4 of the CeCILL v.2.1.
11 // This file was originally licensed under the terms of the CeCILL v2.1,
12 // and continues to be available under such terms.
13 // For more information, see the COPYING file which you should have received
14 // along with this program.
15
16 // Generate a cleaner.sce script for the toolbox
17
18 function tbx_build_cleaner(name, path)
19     // tbx_build_cleaner(name, path)   // deprecated (6.0)
20     // tbx_build_cleaner(name)         // deprecated (6.0)
21     // tbx_build_cleaner(path)         // 6.0
22     // tbx_build_cleaner()             // 6.0  path = pwd()
23
24     fname = "tbx_build_cleaner"
25     rhs = argn(2);
26
27     // CHECKING INPUT PARAMETERS
28     // -------------------------
29     if and(rhs <> [0 1 2]) then
30         msg = _("%s: Wrong number of input arguments: %d to %d expected.\n")
31         error(msprintf(msg, fname, 0, 1))
32     end
33
34     if rhs==2
35         msg = "%s: %s(name, path) is obsolete. Please use %s(path) instead.\n"
36         warning(msprintf(msg, fname, fname, fname))  // no translation
37
38     elseif rhs==0
39         path = pwd()
40     else
41         path = name
42         if type(path) <> 10 then
43             msg = _("%s: Argument #%d: Text(s) expected.\n")
44             error(msprintf(msg, fname, rhs))
45         end
46         path = path(1)
47         // May be
48         //  * either the former tbx_build_cleaner(name) (until 5.5.2)
49         //  * or the new        tbx_build_cleaner(path) (from 6.0.0)
50         if grep(path,["/" "\"])==[] && ~isdir(path) then // only name was provided
51             path = pwd()
52         end
53         if ~isdir(path) then
54             msg = _("%s: The directory ''%s'' doesn''t exist or is not read accessible.\n")
55             error(msprintf(msg, fname, path))
56         end
57     end
58
59     // Build the cleaner file
60     // ----------------------
61     mprintf(gettext("Generating cleaner.sce...\n"))
62
63     cleanertxt = [
64     "// This file is released under the 3-clause BSD license. See COPYING-BSD.",
65     "// Generated by builder.sce: Please, do not edit this file",
66     "",
67     "oldmode = mode();"
68     "mode(-1);"
69     "oldlines = lines()(2)"
70     "lines(0)"
71     "try"
72     "function perform_clean()",
73     "  root_tlbx = get_absolute_file_path(''cleaner.sce'');",
74     "",
75     "  if isfile(root_tlbx + ''/macros/cleanmacros.sce'') then",
76     "    exec(root_tlbx+''/macros/cleanmacros.sce'');",
77     "  else",
78     "      if isdir(root_tlbx + ""/macros/"") then",
79     "          deletefile(root_tlbx + ""/macros/lib"");",
80     "          binfiles = findfiles(root_tlbx + ""/macros/"", ""*.bin"");",
81     "          if ~isempty(binfiles) then",
82     "              deletefile(root_tlbx + ""/macros/"" + binfiles);",
83     "          end",
84     "      end",
85     "  end",
86     "",
87     "  if isfile(root_tlbx + ''/src/cleaner_src.sce'') then",
88     "    exec(root_tlbx+''/src/cleaner_src.sce'');",
89     "  end",
90     "",
91     "  if isfile(root_tlbx + ""/sci_gateway/cleaner_gateway.sce"") then",
92     "    exec(root_tlbx + ""/sci_gateway/cleaner_gateway.sce"");",
93     "    mdelete(root_tlbx + ""/sci_gateway/cleaner_gateway.sce"");",
94     "   end",
95     "",
96     "  if isfile(root_tlbx + ""/help/cleaner_help.sce"") then",
97     "    exec(root_tlbx + ""/help/cleaner_help.sce"");",
98     "  else",
99     "      if isdir(root_tlbx + ""/jar/"") then",
100     "          rmdir(root_tlbx + ""/jar/"", ""s"");",
101     "      end",
102     "  end",
103     "",
104     "  if isfile(root_tlbx + ""/loader.sce"") then",
105     "    mdelete(root_tlbx + ""/loader.sce"");",
106     "  end",
107     "",
108     "  if isfile(root_tlbx + ""/unloader.sce"") then",
109     "    mdelete(root_tlbx + ""/unloader.sce"");",
110     "  end",
111
112     "endfunction",
113     "perform_clean();",
114     "catch"
115     "    [errmsg, tmp, nline, func] = lasterror()"
116     "    msg = ""%s: error on line #%d: """"%s""""\n"""
117     "    msg = msprintf(msg, func, nline, errmsg)"
118     "    lines(oldlines)"
119     "    mode(oldmode);"
120     "    clear perform_clean oldlines oldmode tmp nline func errmsg;"
121     "    error(msg);"
122     "end"
123     "lines(oldlines)"
124     "mode(oldmode);"
125     "clear perform_clean oldlines oldmode;"
126     ]
127
128     cleanerfile = pathconvert(path+"/cleaner.sce", %F);
129
130     if ~mputl(cleanertxt, cleanerfile) then
131         msg = _("%s: The file ""%s"" cannot been created, please check if you have write access on this file.\n")
132         error(msprintf(msg, fname, cleanerfile))
133     end
134
135 endfunction