Salome HOME
Fix wrong compilation of Numeric 23.7 from sources
[tools/install.git] / bin / extract_params.py
1 #==============================================================
2 #
3 #==============================================================
4 def get_help_info() :
5     return "\tUsage : \n\tpython install.py [-gui|tui] [-f <xmlfile>] [-t taget_dir] [-tmp tmp_dir]\n"
6
7 #==============================================================
8 #
9 #==============================================================
10 def error_exit (str = ""):
11     import sys
12     if len(str): res = "\n" + str + "\n"
13     else : res = ""
14     print res + \
15           get_help_info() + \
16           "\nWrong parameters\n\n";
17     sys.exit(1);
18
19
20 #==============================================================
21 # Cheks whether the passed parameter is a key.
22 #==============================================================
23 def is_key ( val ):
24     import re
25     if val is not None : 
26         return re.match(r'^-[a-zA-Z]', val)
27     return 0
28
29 #==============================================================
30 #
31 #==============================================================
32 def extract_parameter ( key, args ) : 
33     import sys
34     length = len(args);
35     if ( length == 0 ) :  return None
36    
37     found = 0;
38
39     for i in range(0, length-1):
40         if  args[i] == key : 
41             if ( is_key ( args[i+1]) ) :
42                 print " No value after key ", key
43                 sys.exit(1);
44             
45             value = args[i+1]
46             if ( i < length - 2  and is_key ( args[i+2] ) == 0 ) : #control that only one value follows key 
47                                                               #(not a list). In this case params are correct.
48                 print "Too much values after key ", key
49                 sys.exit(1);
50             
51             found = 1; break;
52     
53     if (found) : 
54         return  value 
55     
56     return None
57
58
59 #===============================================================
60 # extracts list of values following specified 'key' from 'args[]'
61 #===============================================================
62 def extract_list (key, args) : 
63
64     lenght = len(args)
65     if ( args is None or lenght == 0 ):
66         error_exit()
67
68     list=[]
69     found = 0
70
71     for i in  range(0, length) :
72         if args[i] == key  : 
73             if (is_key ( args[i+1]))  : 
74                  error_exit();
75             
76             for i in range (i+1, lenght):
77                 if is_key(args[i]) : break
78                 list.append(args[i])
79             found =1; break
80      
81     return list; #empty list is returned if no values after key
82
83
84 #==============================================================
85 # Method find the $key in the list and return 1 if success
86 # and 0 otherwise. 
87 #==============================================================
88 def find_key (key, argv) :
89
90     if (not is_key(key)) : return 0
91
92     for simbol in  argv :
93         if simbol == key:
94             return 1 
95     return 0
96
97 #==============================================================
98 #
99 #==============================================================
100 def parse_parameters (args) :
101
102     if find_key('-h', args) :
103         print get_help_info();
104         import sys
105         sys.exit(0)
106         
107     xmlfile = extract_parameter("-f", args)
108     target_dir =  extract_parameter("-t", args)
109     tmp_dir = extract_parameter("-tmp", args)
110     if find_key('-tui', args):
111         is_gui = 0
112     else : is_gui = 1
113     return [xmlfile, target_dir,  tmp_dir, is_gui]