| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 import fnmatch | 6 import fnmatch |
| 7 import glob | 7 import glob |
| 8 import optparse | 8 import optparse |
| 9 import os | 9 import os |
| 10 import posixpath | 10 import posixpath |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 CopyPath(options, srcfile, dstfile) | 101 CopyPath(options, srcfile, dstfile) |
| 102 return | 102 return |
| 103 | 103 |
| 104 | 104 |
| 105 def Copy(args): | 105 def Copy(args): |
| 106 """A Unix cp style copy. | 106 """A Unix cp style copy. |
| 107 | 107 |
| 108 Copies multiple sources to a single destination using the normal cp | 108 Copies multiple sources to a single destination using the normal cp |
| 109 semantics. In addition, it support inclusion and exclusion filters which | 109 semantics. In addition, it support inclusion and exclusion filters which |
| 110 allows the copy to skip certain types of files.""" | 110 allows the copy to skip certain types of files.""" |
| 111 parser = optparse.OptionParser(usage='usage: cp [Options] souces... dest') | 111 parser = optparse.OptionParser(usage='usage: cp [Options] sources... dest') |
| 112 parser.add_option( | 112 parser.add_option( |
| 113 '-R', '-r', '--recursive', dest='recursive', action='store_true', | 113 '-R', '-r', '--recursive', dest='recursive', action='store_true', |
| 114 default=False, | 114 default=False, |
| 115 help='copy directories recursively.') | 115 help='copy directories recursively.') |
| 116 parser.add_option( | 116 parser.add_option( |
| 117 '-v', '--verbose', dest='verbose', action='store_true', | 117 '-v', '--verbose', dest='verbose', action='store_true', |
| 118 default=False, | 118 default=False, |
| 119 help='verbose output.') | 119 help='verbose output.') |
| 120 parser.add_option( | 120 parser.add_option( |
| 121 '--include', dest='includes', action='append', default=[], | 121 '--include', dest='includes', action='append', default=[], |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 165 | 165 |
| 166 for dst in dsts: | 166 for dst in dsts: |
| 167 if options.verbose: | 167 if options.verbose: |
| 168 print 'mkdir ' + dst | 168 print 'mkdir ' + dst |
| 169 try: | 169 try: |
| 170 os.makedirs(dst) | 170 os.makedirs(dst) |
| 171 except OSError: | 171 except OSError: |
| 172 if os.path.isdir(dst): | 172 if os.path.isdir(dst): |
| 173 if options.parents: | 173 if options.parents: |
| 174 continue | 174 continue |
| 175 raise OSError('mkdir: Already exsists: ' + dst) | 175 raise OSError('mkdir: Already exists: ' + dst) |
| 176 else: | 176 else: |
| 177 raise OSError('mkdir: Failed to create: ' + dst) | 177 raise OSError('mkdir: Failed to create: ' + dst) |
| 178 return 0 | 178 return 0 |
| 179 | 179 |
| 180 | 180 |
| 181 def MovePath(options, src, dst): | 181 def MovePath(options, src, dst): |
| 182 """MovePath from src to dst | 182 """MovePath from src to dst |
| 183 | 183 |
| 184 Moves the src to the dst much like the Unix style mv command, except it | 184 Moves the src to the dst much like the Unix style mv command, except it |
| 185 only handles one source at a time. Because of possible temporary failures | 185 only handles one source at a time. Because of possible temporary failures |
| (...skipping 16 matching lines...) Expand all Loading... |
| 202 os.rename(src, dst) | 202 os.rename(src, dst) |
| 203 return | 203 return |
| 204 except OSError as error: | 204 except OSError as error: |
| 205 print 'Failed on %s with %s, retrying' % (src, error) | 205 print 'Failed on %s with %s, retrying' % (src, error) |
| 206 time.sleep(5) | 206 time.sleep(5) |
| 207 print 'Gave up.' | 207 print 'Gave up.' |
| 208 raise OSError('mv: ' + error) | 208 raise OSError('mv: ' + error) |
| 209 | 209 |
| 210 | 210 |
| 211 def Move(args): | 211 def Move(args): |
| 212 parser = optparse.OptionParser(usage='usage: mv [Options] souces... dest') | 212 parser = optparse.OptionParser(usage='usage: mv [Options] sources... dest') |
| 213 parser.add_option( | 213 parser.add_option( |
| 214 '-v', '--verbose', dest='verbose', action='store_true', | 214 '-v', '--verbose', dest='verbose', action='store_true', |
| 215 default=False, | 215 default=False, |
| 216 help='verbose output.') | 216 help='verbose output.') |
| 217 parser.add_option( | 217 parser.add_option( |
| 218 '-f', '--force', dest='force', action='store_true', | 218 '-f', '--force', dest='force', action='store_true', |
| 219 default=False, | 219 default=False, |
| 220 help='force, do not error it files already exist.') | 220 help='force, do not error it files already exist.') |
| 221 options, files = parser.parse_args(args) | 221 options, files = parser.parse_args(args) |
| 222 if len(files) < 2: | 222 if len(files) < 2: |
| (...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 527 return 1 | 527 return 1 |
| 528 func = FuncMap.get(args[0]) | 528 func = FuncMap.get(args[0]) |
| 529 if not func: | 529 if not func: |
| 530 print 'Do not recognize command: ' + args[0] | 530 print 'Do not recognize command: ' + args[0] |
| 531 print 'Available commands: %s' % ' '.join(FuncMap) | 531 print 'Available commands: %s' % ' '.join(FuncMap) |
| 532 return 1 | 532 return 1 |
| 533 return func(args[1:]) | 533 return func(args[1:]) |
| 534 | 534 |
| 535 if __name__ == '__main__': | 535 if __name__ == '__main__': |
| 536 sys.exit(main(sys.argv[1:])) | 536 sys.exit(main(sys.argv[1:])) |
| OLD | NEW |