scripts/dtrx

branch
trunk
changeset 77
3a1f49be7667
parent 76
705642fcb92c
child 78
978307ec7d11
equal deleted inserted replaced
76:705642fcb92c 77:3a1f49be7667
987 self.parse_options(arguments) 987 self.parse_options(arguments)
988 self.setup_logger() 988 self.setup_logger()
989 self.successes = [] 989 self.successes = []
990 self.failures = [] 990 self.failures = []
991 991
992 def clean_destination(self, dest_name):
993 try:
994 os.unlink(dest_name)
995 except OSError, error:
996 if error.errno == errno.EISDIR:
997 shutil.rmtree(dest_name, ignore_errors=True)
998
992 def abort(self, signal_num, frame): 999 def abort(self, signal_num, frame):
993 signal.signal(signal_num, signal.SIG_IGN) 1000 signal.signal(signal_num, signal.SIG_IGN)
994 print 1001 print
995 logger.debug("traceback:\n" + 1002 logger.debug("traceback:\n" +
996 ''.join(traceback.format_stack(frame)).rstrip()) 1003 ''.join(traceback.format_stack(frame)).rstrip())
999 if hasattr(self, 'current_directory'): 1006 if hasattr(self, 'current_directory'):
1000 clean_targets.add(os.path.realpath(self.current_directory)) 1007 clean_targets.add(os.path.realpath(self.current_directory))
1001 for directory in clean_targets: 1008 for directory in clean_targets:
1002 os.chdir(directory) 1009 os.chdir(directory)
1003 for path in glob.glob('.dtrx-*'): 1010 for path in glob.glob('.dtrx-*'):
1004 try: 1011 self.clean_destination(path)
1005 os.unlink(path)
1006 except OSError, error:
1007 if error.errno == errno.EISDIR:
1008 shutil.rmtree(path, ignore_errors=True)
1009 sys.exit(1) 1012 sys.exit(1)
1010 1013
1011 def parse_options(self, arguments): 1014 def parse_options(self, arguments):
1012 parser = optparse.OptionParser( 1015 parser = optparse.OptionParser(
1013 usage="%prog [options] archive [archive2 ...]", 1016 usage="%prog [options] archive [archive2 ...]",
1086 errors = [] 1089 errors = []
1087 for extractor in builder: 1090 for extractor in builder:
1088 error = self.action.run(filename, extractor) 1091 error = self.action.run(filename, extractor)
1089 if error: 1092 if error:
1090 errors.append((extractor.file_type, extractor.encoding, error)) 1093 errors.append((extractor.file_type, extractor.encoding, error))
1094 if extractor.target is not None:
1095 self.clean_destination(extractor.target)
1091 else: 1096 else:
1092 self.recurse(filename, extractor, self.action) 1097 self.recurse(filename, extractor, self.action)
1093 return 1098 return
1094 logger.error("could not handle %s" % (filename,)) 1099 logger.error("could not handle %s" % (filename,))
1095 if not errors: 1100 if not errors:

mercurial