~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to tools/win32/ostools.py

Late bind to PatienceSequenceMatcher to allow plugin to override.

Show diffs side-by-side

added added

removed removed

Lines of Context:
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())