Bug #10846 fixed - atomsSystemUpdate failed.
[scilab.git] / scilab / modules / atoms / macros / atomsGetConfig.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 // Copyright (C) 2021 - DIGITEO - Allan CORNET
4 //
5 // This file must be used under the terms of the CeCILL.
6 // This source file is licensed as described in the file COPYING, which
7 // you should have received as part of this distribution.  The terms
8 // are also available at
9 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10 //
11 // Get the configuration of the atoms system
12 //
13 function result = atomsGetConfig(field)
14
15   rhs = argn(2);
16
17   // Check number of input arguments
18   // =========================================================================
19   if rhs > 1 then
20     error(msprintf(gettext("%s: Wrong number of input argument: %d to %d expected.\n"), "atomsGetConfig", 0, 1));
21   end
22
23   // Check input parameters type
24   // =========================================================================
25   if (rhs > 0) & (type(field) <> 10) then
26     error(msprintf(gettext("%s: Wrong type for input argument #%d: Single string expected.\n"), "atomsGetConfig", 1));
27   end
28
29   // Check input parameters dimensions
30   // =========================================================================
31   if (rhs > 0) & (size(field, "*") <> 1) then
32     error(msprintf(gettext("%s: Wrong size for input argument #%d: Single string expected.\n"), "atomsGetConfig", 1));
33   end
34
35
36   if rhs <> 0 then
37     supported_field = ["useProxy", "proxyHost", "proxyPort", ..
38                      "proxyUser", "proxyPassword", "offline", ..
39                      "autoload", "autoloadAddAfterInstall", ..
40                      "verbose", "downloadTool", "downloadTimeout"];
41
42     if ~or(convstr(supported_field) == convstr(field)) then
43       error(msprintf(gettext("%s: Wrong value for input argument #%d.\n"),"atomsGetConfig", 1));
44     end
45   end
46
47   // Load Atoms Internals lib if it's not already loaded
48   // =========================================================================
49   if ~ exists("atomsinternalslib") then
50     load("SCI/modules/atoms/macros/atoms_internals/lib");
51   end
52
53   // Define the default value of the result according to the number of input
54   // arguments
55   // =========================================================================
56
57   if rhs == 0 then
58     result = struct();
59   else
60     result = "";
61   end
62
63   // Define the path of the file that will record the change
64   // =========================================================================
65   atoms_directory = atomsPath("system", "user");
66
67   // Does the SCIHOME/atoms/config exist, if yes load it
68   // =========================================================================
69
70   if fileinfo(atoms_directory + "config") <> [] then
71     config_lines = mgetl(atoms_directory + "config");
72   else
73     return;
74   end
75
76   // Loop on each URL specified as input argument
77   // =========================================================================
78
79   for i=1:size(config_lines, "*")
80     if isempty( stripblanks(config_lines(i))) then
81       continue;
82     end
83
84     if regexp(config_lines(i),"/^[a-zA-Z0-9]*\s=\s/","o") == 1 then
85       // process field
86       current_field_length  = regexp(config_lines(i),"/\s=\s/","o")
87       current_field     = part(config_lines(i),1:current_field_length-1);
88       current_value     = part(config_lines(i),current_field_length+3:length(config_lines(i)));
89
90       if (rhs == 1) & (current_field == field) then
91         result = current_value;
92         return;
93       elseif(rhs == 0)
94         result(current_field) = current_value;
95       end
96     else
97       error(msprintf(gettext("%s: The config file (''%s'') is not well formated at line %d\n"),"atomsGetConfig",atoms_directory+"config",i));
98     end
99   end
100
101 endfunction