~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to tools/win32/ostools.py

  • Committer: Aaron Bentley
  • Date: 2008-12-03 05:31:27 UTC
  • mto: This revision was merged to the branch mainline in revision 3893.
  • Revision ID: aaron@aaronbentley.com-20081203053127-vozu5rmsixaadw0v
Change ls-shelf to shelve --list

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 copytree FILES... DIR
 
13
                    copy files to specified directory keeping relative paths
 
14
 
 
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
 
 
24
 
 
25
def main(argv=None):
 
26
    if argv is None:
 
27
        argv = sys.argv[1:]
 
28
 
 
29
    if not argv:
 
30
        argv = ['help']
 
31
 
 
32
    cmd = argv.pop(0)
 
33
 
 
34
    if cmd == 'help':
 
35
        print __doc__
 
36
        return 0
 
37
 
 
38
    if cmd == 'copytodir':
 
39
        if len(argv) < 2:
 
40
            print "Usage:  ostools.py copytodir FILES... DIR"
 
41
            return 1
 
42
 
 
43
        todir = argv.pop()
 
44
        if not os.path.exists(todir):
 
45
            os.makedirs(todir)
 
46
        if not os.path.isdir(todir):
 
47
            print "Error: Destination is not a directory"
 
48
            return 2
 
49
 
 
50
        files = []
 
51
        for possible_glob in argv:
 
52
            files += glob.glob(possible_glob)
 
53
 
 
54
        for src in files:
 
55
            dest = os.path.join(todir, os.path.basename(src))
 
56
            shutil.copy(src, dest)
 
57
            print "Copied:", src, "=>", dest
 
58
 
 
59
        return 0
 
60
 
 
61
    if cmd == 'copytree':
 
62
        if len(argv) < 2:
 
63
            print "Usage:  ostools.py copytree FILES... DIR"
 
64
            return 1
 
65
 
 
66
        todir = argv.pop()
 
67
        if not os.path.exists(todir):
 
68
            os.makedirs(todir)
 
69
        if not os.path.isdir(todir):
 
70
            print "Error: Destination is not a directory"
 
71
            return 2
 
72
 
 
73
        files = []
 
74
        for possible_glob in argv:
 
75
            files += glob.glob(possible_glob)
 
76
 
 
77
        for src in files:
 
78
            relative_path = src
 
79
            dest = os.path.join(todir, relative_path)
 
80
            dest_dir = os.path.dirname(dest)
 
81
            if not os.path.isdir(dest_dir):
 
82
                os.makedirs(dest_dir)
 
83
            shutil.copy(src, dest)
 
84
            print "Copied:", src, "=>", dest
 
85
 
 
86
        return 0
 
87
 
 
88
    if cmd == 'remove':
 
89
        if len(argv) == 0:
 
90
            print "Usage:  ostools.py remove [FILES...] [DIRS...]"
 
91
            return 1
 
92
 
 
93
        filesdirs = []
 
94
        for possible_glob in argv:
 
95
            filesdirs += glob.glob(possible_glob)
 
96
 
 
97
        for i in filesdirs:
 
98
            if os.path.isdir(i):
 
99
                shutil.rmtree(i)
 
100
                print "Removed:", i
 
101
            elif os.path.isfile(i):
 
102
                os.remove(i)
 
103
                print "Removed:", i
 
104
            else:
 
105
                print "Not found:", i
 
106
 
 
107
        return 0
 
108
 
 
109
    print "Usage error"
 
110
    print __doc__
 
111
    return 1
 
112
 
 
113
 
 
114
if __name__ == "__main__":
 
115
    sys.exit(main())