- installed packages and dependencies are now saved into binary files
[scilab.git] / scilab / modules / atoms / macros / atomsIsInstalled.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 // End user function
11
12 // Returns TRUE if a package is installed, FALSE otherwise
13
14 // Input parameters :
15 //   name     : matrix of strings
16 //   version  : matrix of strings
17 //   allusers : boolean
18
19 // Output parameters :
20 //   res      : matrix of boolean
21
22 function res = atomsIsInstalled(name,version,allusers)
23         
24         rhs           = argn(2);
25         res           = [];
26         installed     = []; // Column vector that contain user repositories
27         
28         // Check number of input arguments
29         // =========================================================================
30         
31         if rhs < 1 | rhs > 3 then
32                 error(msprintf(gettext("%s: Wrong number of input argument: %d to %d expected.\n"),"atomsIsInstalled",1,3));
33         end
34         
35         // Check input parameters type
36         // =========================================================================
37         
38         if type(name) <> 10 then
39                 error(msprintf(gettext("%s: Wrong type for input argument #%d: String array expected.\n"),"atomsIsInstalled",1));
40         end
41         
42         if rhs>1 &  (~isempty(version)) & type(version)<>10  then
43                 error(msprintf(gettext("%s: Wrong type for input argument #%d: String array expected.\n"),"atomsIsInstalled",2));
44         end
45         
46         // name and version must have the same size
47         // =========================================================================
48         
49         if rhs>1 & version<>[] & or(size(name)<>size(version)) then
50                 error(msprintf(gettext("%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"),"atomsIsInstalled",1,2));
51         end
52         
53         // Value of version if not precised
54         // =========================================================================
55         
56         if rhs < 2 then
57                 version = [];
58         end
59         
60         // allusers management
61         // =========================================================================
62         
63         if rhs < 3 then
64                 allusers = %T;
65         end
66         
67         // Get the list of installed packages
68         // =========================================================================
69         packages = atomsGetInstalled(allusers);
70         
71         // Loop on name
72         // =========================================================================
73         
74         for i=1:size(name,"*")
75                 
76                 if isempty(version) then
77                         // Just check the name
78                         res(i) = or(packages(:,1) == name(i));
79                 
80                 else
81                         // Filter on names
82                         packages_version = packages( find(packages(:,1) == name(i)) , 2 );
83                         
84                         // Check if the wnated version is present$
85                         res(i) = or(packages_version == version(i) );
86                 end
87                 
88         end
89         
90         // Reshape the matrix
91         // =========================================================================
92         res = matrix(res,size(name) );
93         
94 endfunction