~bzr-pqm/bzr/bzr.dev

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())