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