/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to tools/win32/ostools.py

  • Committer: John Arbash Meinel
  • Date: 2007-05-31 20:29:04 UTC
  • mto: This revision was merged to the branch mainline in revision 2499.
  • Revision ID: john@arbash-meinel.com-20070531202904-34h7ygudo7qq9ha1
Update the code so that symlinks aren't cached at incorrect times
and fix the tests so that they don't assume files and symlinks
get cached even when the timestamp doesn't declare them 'safe'.

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