/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: Martin Pool
  • Date: 2007-05-04 08:46:39 UTC
  • mto: (2483.1.1 jam-integration)
  • mto: This revision was merged to the branch mainline in revision 2484.
  • Revision ID: mbp@sourcefrog.net-20070504084639-8v8mzetmr1y74xer
Rename push/pull back to 'run_hooks' (jameinel)

Reorganize Branch.push into some template methods: public push,
_push_with_bound_branches, and _basic_push.  This fixes the case 
where the destination of push is bound, but the source branch
format doesn't support binding.

Run push and pull hook tests with a local branch that does support binding,
rather than skipping if the branch can't be bound to another of the same
format.

(broken) because the hooks are given the wrong parameters when 
pushing into something bound to a remote branch.

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