Bug #9798 fixed - .quit script of atoms modules were not evaluated when leaving Scilab.
[scilab.git] / scilab / modules / modules_manager / macros / tbx_build_loader.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2008 - INRIA - Simon LIPP <simon.lipp@scilab.org>
3 // Copyright (C) 2010 - DIGITEO - Pierre MARECHAL
4 // Copyright (C) 2010-2012 - DIGITEO - Allan CORNET
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 // Generate a loader.sce script for the toolbox
13
14 function tbx_build_loader(name, path)
15
16   rhs = argn(2);
17
18   // Number of input arguments
19
20   if and(rhs <> [1 2]) then
21     error(msprintf(gettext("%s: Wrong number of input arguments: %d to %d expected.\n"), "tbx_build_loader", 1, 2));
22   end
23
24   // Input argument N°1
25   // name
26
27   if type(name) <> 10 then
28     error(msprintf(gettext("%s: Wrong type for input argument #%d: A string expected.\n"), "tbx_build_loader", 1));
29   end
30
31   if size(name, "*") <> 1 then
32     error(msprintf(gettext("%s: Wrong size for input argument #%d: A string expected.\n"), "tbx_build_loader", 1));
33   end
34
35   // Input argument N°2
36   // path
37
38   if rhs < 2 then
39     path = pwd();
40   else
41     if type(path) <> 10 then
42       error(msprintf(gettext("%s: Wrong type for input argument #%d: A string expected.\n"), "tbx_build_loader", 2));
43     end
44
45     if size(path,"*") <> 1 then
46       error(msprintf(gettext("%s: Wrong size for input argument #%d: A string expected.\n"), "tbx_build_loader", 2));
47     end
48
49     if ~isdir(path) then
50       error(msprintf(gettext("%s: The directory ''%s'' doesn''t exist or is not read accessible.\n"), "tbx_build_loader", path));
51     end
52   end
53
54   // build the loader file
55
56   mprintf(gettext("Generating loader.sce...\n"));
57
58   loadertxt = [
59   "// This file is released under the 3-clause BSD license. See COPYING-BSD.",
60   "// Generated by builder.sce: Please, do not edit this file",
61   "",
62   "try",
63   " getversion(""scilab"");",
64   "catch",
65   " error(""Scilab 5.0 or more is required."");",
66   "end;",
67   "",
68   "exec(get_absolute_file_path(""loader.sce"")+""etc"+filesep()+"""+"""+name+".start"");"];
69
70   loaderfile = pathconvert(path + "/loader.sce", %F);
71
72   if ~mputl(loadertxt, loaderfile) then
73     error(msprintf(gettext("%s: The file %s cannot been created, please check if you have write access on this file.\n"), "tbx_build_loader", loaderfile));
74   end
75
76   mprintf(gettext("Generating unloader.sce...\n"));
77   
78   unloadertxt = [
79   "// This file is released under the 3-clause BSD license. See COPYING-BSD.",
80   "// Generated by builder.sce: Please, do not edit this file",
81   "",
82   "try",
83   " getversion(""scilab"");",
84   "catch",
85   " error(""Scilab 5.4 or more is required."");",
86   "end;",
87   "",
88   "fileQuit = get_absolute_file_path(""unloader.sce"") + ""etc" + filesep() + """ + """ + name + ".quit"";",
89   "if isfile(fileQuit) then",
90   "  exec(fileQuit);",
91   "end"
92   ""];
93   
94   unloaderfile = pathconvert(path + "/unloader.sce", %F);
95
96   if ~mputl(unloadertxt, unloaderfile) then
97     error(msprintf(gettext("%s: The file %s cannot been created, please check if you have write access on this file.\n"), "tbx_build_loader", unloaderfile));
98   end
99
100 endfunction