-
-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathGuessProgramCase.py
More file actions
executable file
·50 lines (38 loc) · 1.11 KB
/
GuessProgramCase.py
File metadata and controls
executable file
·50 lines (38 loc) · 1.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/usr/bin/env python
# (C) 2004 Andre Detsch. Released under the GNU GPL.
# GuessProgramCase
# Try to guess the case of a program based on the installed packages
def GuessProgramCase(program, version = None) :
import os
try :
goboPrograms = os.environ['goboPrograms']
except :
goboPrograms = os.popen('. GoboPath; echo -n $goboPrograms').read()
if version :
if os.access(goboPrograms+'/'+program+'/'+version, os.R_OK) :
return program
else :
if os.access(goboPrograms+'/'+program, os.R_OK) :
return program
p = program.lower()
ds = [ d for d in os.listdir(goboPrograms) if d.lower() == p ]
if len(ds) == 0 :
return program
elif len(ds) == 1 :
return ds[0]
for d in ds :
if version :
if os.access(goboPrograms+'/'+d+'/'+version, os.R_OK) :
return d
else :
if os.access(goboPrograms+'/'+d, os.R_OK) :
return d
return program
if __name__ == '__main__' :
import sys
if len(sys.argv) < 2 :
print "Usage: %s program_name [version]"%sys.argv[0]
elif len(sys.argv) == 2 :
print GuessProgramCase(sys.argv[1])
else :
print GuessProgramCase(sys.argv[1], sys.argv[2])