/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
1861.2.18 by Alexander Belchenko
Makefile: cross-platform actions for building installer
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
2691.1.16 by Ian Clatworthy
Ensure doc hierarchy is setup correctly for the Windows installer
12
    ostools.py copytree FILES... DIR
13
                    copy files to specified directory keeping relative paths
14
1861.2.18 by Alexander Belchenko
Makefile: cross-platform actions for building installer
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
4392.3.21 by Sidnei da Silva
- Make build-installer work for both trunk and latest of both bzr and plugins
24
def makedir(dirname):
25
    if not os.path.exists(dirname):
26
        os.makedirs(dirname)
27
    if not os.path.isdir(dirname):
6619.3.3 by Jelmer Vernooij
Apply 2to3 print fix.
28
        print("Error: Destination is not a directory", dirname)
4392.3.21 by Sidnei da Silva
- Make build-installer work for both trunk and latest of both bzr and plugins
29
        return 2
30
    return 0
1861.2.18 by Alexander Belchenko
Makefile: cross-platform actions for building installer
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':
6619.3.3 by Jelmer Vernooij
Apply 2to3 print fix.
42
        print(__doc__)
1861.2.18 by Alexander Belchenko
Makefile: cross-platform actions for building installer
43
        return 0
44
45
    if cmd == 'copytodir':
46
        if len(argv) < 2:
6619.3.3 by Jelmer Vernooij
Apply 2to3 print fix.
47
            print("Usage:  ostools.py copytodir FILES... DIR")
1861.2.18 by Alexander Belchenko
Makefile: cross-platform actions for building installer
48
            return 1
49
4392.3.24 by Sidnei da Silva
- Fix a NameError
50
        todir = argv.pop()
51
        retcode = makedir(todir)
4392.3.21 by Sidnei da Silva
- Make build-installer work for both trunk and latest of both bzr and plugins
52
        if retcode:
53
            return retcode
1861.2.18 by Alexander Belchenko
Makefile: cross-platform actions for building installer
54
55
        files = []
56
        for possible_glob in argv:
57
            files += glob.glob(possible_glob)
58
59
        for src in files:
60
            dest = os.path.join(todir, os.path.basename(src))
61
            shutil.copy(src, dest)
6619.3.3 by Jelmer Vernooij
Apply 2to3 print fix.
62
            print("Copied:", src, "=>", dest)
1861.2.18 by Alexander Belchenko
Makefile: cross-platform actions for building installer
63
64
        return 0
65
2691.1.16 by Ian Clatworthy
Ensure doc hierarchy is setup correctly for the Windows installer
66
    if cmd == 'copytree':
67
        if len(argv) < 2:
6619.3.3 by Jelmer Vernooij
Apply 2to3 print fix.
68
            print("Usage:  ostools.py copytree FILES... DIR")
2691.1.16 by Ian Clatworthy
Ensure doc hierarchy is setup correctly for the Windows installer
69
            return 1
70
4392.3.24 by Sidnei da Silva
- Fix a NameError
71
        todir = argv.pop()
72
        retcode = makedir(todir)
4392.3.21 by Sidnei da Silva
- Make build-installer work for both trunk and latest of both bzr and plugins
73
        if retcode:
74
            return retcode
2691.1.16 by Ian Clatworthy
Ensure doc hierarchy is setup correctly for the Windows installer
75
76
        files = []
77
        for possible_glob in argv:
78
            files += glob.glob(possible_glob)
79
80
        for src in files:
81
            relative_path = src
82
            dest = os.path.join(todir, relative_path)
83
            dest_dir = os.path.dirname(dest)
4392.3.21 by Sidnei da Silva
- Make build-installer work for both trunk and latest of both bzr and plugins
84
            retcode = makedir(dest_dir)
85
            if retcode:
86
                return retcode
2691.1.16 by Ian Clatworthy
Ensure doc hierarchy is setup correctly for the Windows installer
87
            shutil.copy(src, dest)
6619.3.3 by Jelmer Vernooij
Apply 2to3 print fix.
88
            print("Copied:", src, "=>", dest)
2691.1.16 by Ian Clatworthy
Ensure doc hierarchy is setup correctly for the Windows installer
89
90
        return 0
91
1861.2.18 by Alexander Belchenko
Makefile: cross-platform actions for building installer
92
    if cmd == 'remove':
93
        if len(argv) == 0:
6619.3.3 by Jelmer Vernooij
Apply 2to3 print fix.
94
            print("Usage:  ostools.py remove [FILES...] [DIRS...]")
1861.2.18 by Alexander Belchenko
Makefile: cross-platform actions for building installer
95
            return 1
96
97
        filesdirs = []
98
        for possible_glob in argv:
99
            filesdirs += glob.glob(possible_glob)
100
101
        for i in filesdirs:
102
            if os.path.isdir(i):
103
                shutil.rmtree(i)
6619.3.3 by Jelmer Vernooij
Apply 2to3 print fix.
104
                print("Removed:", i)
1861.2.18 by Alexander Belchenko
Makefile: cross-platform actions for building installer
105
            elif os.path.isfile(i):
106
                os.remove(i)
6619.3.3 by Jelmer Vernooij
Apply 2to3 print fix.
107
                print("Removed:", i)
1861.2.18 by Alexander Belchenko
Makefile: cross-platform actions for building installer
108
            else:
6619.3.3 by Jelmer Vernooij
Apply 2to3 print fix.
109
                print("Not found:", i)
1861.2.18 by Alexander Belchenko
Makefile: cross-platform actions for building installer
110
111
        return 0
112
4392.3.9 by Sidnei da Silva
- Getting really close now
113
    if cmd == "basename":
114
        if len(argv) == 0:
6619.3.3 by Jelmer Vernooij
Apply 2to3 print fix.
115
            print("Usage:  ostools.py basename [PATH | URL]")
4392.3.9 by Sidnei da Silva
- Getting really close now
116
            return 1
4392.3.21 by Sidnei da Silva
- Make build-installer work for both trunk and latest of both bzr and plugins
117
4392.3.9 by Sidnei da Silva
- Getting really close now
118
        for path in argv:
6619.3.3 by Jelmer Vernooij
Apply 2to3 print fix.
119
            print(os.path.basename(path))
4392.3.9 by Sidnei da Silva
- Getting really close now
120
        return 0
121
4392.3.21 by Sidnei da Silva
- Make build-installer work for both trunk and latest of both bzr and plugins
122
    if cmd == 'makedir':
4392.3.22 by Sidnei da Silva
- Fix a few SNAFUs
123
        if len(argv) == 0:
6619.3.3 by Jelmer Vernooij
Apply 2to3 print fix.
124
            print("Usage:  ostools.py makedir DIR")
4392.3.21 by Sidnei da Silva
- Make build-installer work for both trunk and latest of both bzr and plugins
125
            return 1
126
127
        retcode = makedir(argv.pop())
128
        if retcode:
129
            return retcode
130
        return 0
131
6619.3.3 by Jelmer Vernooij
Apply 2to3 print fix.
132
    print("Usage error")
133
    print(__doc__)
1861.2.18 by Alexander Belchenko
Makefile: cross-platform actions for building installer
134
    return 1
135
136
137
if __name__ == "__main__":
138
    sys.exit(main())