1861.2.18
by Alexander Belchenko
Makefile: cross-platform actions for building installer |
1 |
#!/usr/bin/python
|
2 |
||
3 |
"""Cross-platform os tools: files/directories manipulations
|
|
4 |
Usage:
|
|
5 |
||
6 |
ostools.py help
|
|
7 |
prints this help
|
|
8 |
||
9 |
ostools.py copytodir FILES... DIR
|
|
10 |
copy files to specified directory
|
|
11 |
||
12 |
ostools.py remove [FILES...] [DIRS...]
|
|
13 |
remove files or directories (recursive)
|
|
14 |
"""
|
|
15 |
||
16 |
import glob |
|
17 |
import os |
|
18 |
import shutil |
|
19 |
import sys |
|
20 |
||
21 |
||
22 |
def main(argv=None): |
|
23 |
if argv is None: |
|
24 |
argv = sys.argv[1:] |
|
25 |
||
26 |
if not argv: |
|
27 |
argv = ['help'] |
|
28 |
||
29 |
cmd = argv.pop(0) |
|
30 |
||
31 |
if cmd == 'help': |
|
32 |
print __doc__ |
|
33 |
return 0 |
|
34 |
||
35 |
if cmd == 'copytodir': |
|
36 |
if len(argv) < 2: |
|
37 |
print "Usage: ostools.py copytodir FILES... DIR" |
|
38 |
return 1 |
|
39 |
||
40 |
todir = argv.pop() |
|
41 |
if not os.path.exists(todir): |
|
42 |
os.makedirs(todir) |
|
43 |
if not os.path.isdir(todir): |
|
44 |
print "Error: Destination is not a directory" |
|
45 |
return 2 |
|
46 |
||
47 |
files = [] |
|
48 |
for possible_glob in argv: |
|
49 |
files += glob.glob(possible_glob) |
|
50 |
||
51 |
for src in files: |
|
52 |
dest = os.path.join(todir, os.path.basename(src)) |
|
53 |
shutil.copy(src, dest) |
|
54 |
print "Copied:", src, "=>", dest |
|
55 |
||
56 |
return 0 |
|
57 |
||
58 |
if cmd == 'remove': |
|
59 |
if len(argv) == 0: |
|
60 |
print "Usage: ostools.py remove [FILES...] [DIRS...]" |
|
61 |
return 1 |
|
62 |
||
63 |
filesdirs = [] |
|
64 |
for possible_glob in argv: |
|
65 |
filesdirs += glob.glob(possible_glob) |
|
66 |
||
67 |
for i in filesdirs: |
|
68 |
if os.path.isdir(i): |
|
69 |
shutil.rmtree(i) |
|
70 |
print "Removed:", i |
|
71 |
elif os.path.isfile(i): |
|
72 |
os.remove(i) |
|
73 |
print "Removed:", i |
|
74 |
else: |
|
75 |
print "Not found:", i |
|
76 |
||
77 |
return 0 |
|
78 |
||
79 |
print "Usage error" |
|
80 |
print __doc__ |
|
81 |
return 1 |
|
82 |
||
83 |
||
84 |
if __name__ == "__main__": |
|
85 |
sys.exit(main()) |