/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: Sidnei da Silva
  • Date: 2009-07-04 02:16:06 UTC
  • mto: (4531.1.1 integration)
  • mto: This revision was merged to the branch mainline in revision 4532.
  • Revision ID: sidnei.da.silva@canonical.com-20090704021606-os06th007b2bfu5u
- Define targets as 'release' and 'dev', allow passing them through make

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