bzr branch
http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
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 |
||
2691.1.16
by Ian Clatworthy
Ensure doc hierarchy is setup correctly for the Windows installer |
12 |
ostools.py copytree FILES... DIR
|
13 |
copy files to specified directory keeping relative paths
|
|
14 |
||
1861.2.18
by Alexander Belchenko
Makefile: cross-platform actions for building installer |
15 |
ostools.py remove [FILES...] [DIRS...]
|
16 |
remove files or directories (recursive)
|
|
17 |
"""
|
|
18 |
||
19 |
import glob |
|
20 |
import os |
|
21 |
import shutil |
|
22 |
import sys |
|
23 |
||
4392.3.21
by Sidnei da Silva
- Make build-installer work for both trunk and latest of both bzr and plugins |
24 |
def makedir(dirname): |
25 |
if not os.path.exists(dirname): |
|
26 |
os.makedirs(dirname) |
|
27 |
if not os.path.isdir(dirname): |
|
6619.3.3
by Jelmer Vernooij
Apply 2to3 print fix. |
28 |
print("Error: Destination is not a directory", dirname) |
4392.3.21
by Sidnei da Silva
- Make build-installer work for both trunk and latest of both bzr and plugins |
29 |
return 2 |
30 |
return 0 |
|
1861.2.18
by Alexander Belchenko
Makefile: cross-platform actions for building installer |
31 |
|
32 |
def main(argv=None): |
|
33 |
if argv is None: |
|
34 |
argv = sys.argv[1:] |
|
35 |
||
36 |
if not argv: |
|
37 |
argv = ['help'] |
|
38 |
||
39 |
cmd = argv.pop(0) |
|
40 |
||
41 |
if cmd == 'help': |
|
6619.3.3
by Jelmer Vernooij
Apply 2to3 print fix. |
42 |
print(__doc__) |
1861.2.18
by Alexander Belchenko
Makefile: cross-platform actions for building installer |
43 |
return 0 |
44 |
||
45 |
if cmd == 'copytodir': |
|
46 |
if len(argv) < 2: |
|
6619.3.3
by Jelmer Vernooij
Apply 2to3 print fix. |
47 |
print("Usage: ostools.py copytodir FILES... DIR") |
1861.2.18
by Alexander Belchenko
Makefile: cross-platform actions for building installer |
48 |
return 1 |
49 |
||
4392.3.24
by Sidnei da Silva
- Fix a NameError |
50 |
todir = argv.pop() |
51 |
retcode = makedir(todir) |
|
4392.3.21
by Sidnei da Silva
- Make build-installer work for both trunk and latest of both bzr and plugins |
52 |
if retcode: |
53 |
return retcode |
|
1861.2.18
by Alexander Belchenko
Makefile: cross-platform actions for building installer |
54 |
|
55 |
files = [] |
|
56 |
for possible_glob in argv: |
|
57 |
files += glob.glob(possible_glob) |
|
58 |
||
59 |
for src in files: |
|
60 |
dest = os.path.join(todir, os.path.basename(src)) |
|
61 |
shutil.copy(src, dest) |
|
6619.3.3
by Jelmer Vernooij
Apply 2to3 print fix. |
62 |
print("Copied:", src, "=>", dest) |
1861.2.18
by Alexander Belchenko
Makefile: cross-platform actions for building installer |
63 |
|
64 |
return 0 |
|
65 |
||
2691.1.16
by Ian Clatworthy
Ensure doc hierarchy is setup correctly for the Windows installer |
66 |
if cmd == 'copytree': |
67 |
if len(argv) < 2: |
|
6619.3.3
by Jelmer Vernooij
Apply 2to3 print fix. |
68 |
print("Usage: ostools.py copytree FILES... DIR") |
2691.1.16
by Ian Clatworthy
Ensure doc hierarchy is setup correctly for the Windows installer |
69 |
return 1 |
70 |
||
4392.3.24
by Sidnei da Silva
- Fix a NameError |
71 |
todir = argv.pop() |
72 |
retcode = makedir(todir) |
|
4392.3.21
by Sidnei da Silva
- Make build-installer work for both trunk and latest of both bzr and plugins |
73 |
if retcode: |
74 |
return retcode |
|
2691.1.16
by Ian Clatworthy
Ensure doc hierarchy is setup correctly for the Windows installer |
75 |
|
76 |
files = [] |
|
77 |
for possible_glob in argv: |
|
78 |
files += glob.glob(possible_glob) |
|
79 |
||
80 |
for src in files: |
|
81 |
relative_path = src |
|
82 |
dest = os.path.join(todir, relative_path) |
|
83 |
dest_dir = os.path.dirname(dest) |
|
4392.3.21
by Sidnei da Silva
- Make build-installer work for both trunk and latest of both bzr and plugins |
84 |
retcode = makedir(dest_dir) |
85 |
if retcode: |
|
86 |
return retcode |
|
2691.1.16
by Ian Clatworthy
Ensure doc hierarchy is setup correctly for the Windows installer |
87 |
shutil.copy(src, dest) |
6619.3.3
by Jelmer Vernooij
Apply 2to3 print fix. |
88 |
print("Copied:", src, "=>", dest) |
2691.1.16
by Ian Clatworthy
Ensure doc hierarchy is setup correctly for the Windows installer |
89 |
|
90 |
return 0 |
|
91 |
||
1861.2.18
by Alexander Belchenko
Makefile: cross-platform actions for building installer |
92 |
if cmd == 'remove': |
93 |
if len(argv) == 0: |
|
6619.3.3
by Jelmer Vernooij
Apply 2to3 print fix. |
94 |
print("Usage: ostools.py remove [FILES...] [DIRS...]") |
1861.2.18
by Alexander Belchenko
Makefile: cross-platform actions for building installer |
95 |
return 1 |
96 |
||
97 |
filesdirs = [] |
|
98 |
for possible_glob in argv: |
|
99 |
filesdirs += glob.glob(possible_glob) |
|
100 |
||
101 |
for i in filesdirs: |
|
102 |
if os.path.isdir(i): |
|
103 |
shutil.rmtree(i) |
|
6619.3.3
by Jelmer Vernooij
Apply 2to3 print fix. |
104 |
print("Removed:", i) |
1861.2.18
by Alexander Belchenko
Makefile: cross-platform actions for building installer |
105 |
elif os.path.isfile(i): |
106 |
os.remove(i) |
|
6619.3.3
by Jelmer Vernooij
Apply 2to3 print fix. |
107 |
print("Removed:", i) |
1861.2.18
by Alexander Belchenko
Makefile: cross-platform actions for building installer |
108 |
else: |
6619.3.3
by Jelmer Vernooij
Apply 2to3 print fix. |
109 |
print("Not found:", i) |
1861.2.18
by Alexander Belchenko
Makefile: cross-platform actions for building installer |
110 |
|
111 |
return 0 |
|
112 |
||
4392.3.9
by Sidnei da Silva
- Getting really close now |
113 |
if cmd == "basename": |
114 |
if len(argv) == 0: |
|
6619.3.3
by Jelmer Vernooij
Apply 2to3 print fix. |
115 |
print("Usage: ostools.py basename [PATH | URL]") |
4392.3.9
by Sidnei da Silva
- Getting really close now |
116 |
return 1 |
4392.3.21
by Sidnei da Silva
- Make build-installer work for both trunk and latest of both bzr and plugins |
117 |
|
4392.3.9
by Sidnei da Silva
- Getting really close now |
118 |
for path in argv: |
6619.3.3
by Jelmer Vernooij
Apply 2to3 print fix. |
119 |
print(os.path.basename(path)) |
4392.3.9
by Sidnei da Silva
- Getting really close now |
120 |
return 0 |
121 |
||
4392.3.21
by Sidnei da Silva
- Make build-installer work for both trunk and latest of both bzr and plugins |
122 |
if cmd == 'makedir': |
4392.3.22
by Sidnei da Silva
- Fix a few SNAFUs |
123 |
if len(argv) == 0: |
6619.3.3
by Jelmer Vernooij
Apply 2to3 print fix. |
124 |
print("Usage: ostools.py makedir DIR") |
4392.3.21
by Sidnei da Silva
- Make build-installer work for both trunk and latest of both bzr and plugins |
125 |
return 1 |
126 |
||
127 |
retcode = makedir(argv.pop()) |
|
128 |
if retcode: |
|
129 |
return retcode |
|
130 |
return 0 |
|
131 |
||
6619.3.3
by Jelmer Vernooij
Apply 2to3 print fix. |
132 |
print("Usage error") |
133 |
print(__doc__) |
|
1861.2.18
by Alexander Belchenko
Makefile: cross-platform actions for building installer |
134 |
return 1 |
135 |
||
136 |
||
137 |
if __name__ == "__main__": |
|
138 |
sys.exit(main()) |