scripts/dtrx

branch
trunk
changeset 84
d78d63cb4c4e
parent 83
cb56c72f3d42
child 85
ad73f75c9046
equal deleted inserted replaced
83:cb56c72f3d42 84:d78d63cb4c4e
668 prompt = "What do you want to do? (I/r/h) " 668 prompt = "What do you want to do? (I/r/h) "
669 669
670 def __init__(self, options): 670 def __init__(self, options):
671 BasePolicy.__init__(self, options) 671 BasePolicy.__init__(self, options)
672 if options.flat: 672 if options.flat:
673 default = 'h'
674 elif options.one_entry_default is not None:
675 default = options.one_entry_default.lower()
676 else:
677 return
678 if 'here'.startswith(default):
673 self.permanent_policy = EXTRACT_HERE 679 self.permanent_policy = EXTRACT_HERE
680 elif 'rename'.startswith(default):
681 self.permanent_policy = EXTRACT_RENAME
682 elif 'inside'.startswith(default):
683 self.permanent_policy = EXTRACT_WRAP
684 elif default is not None:
685 raise ValueError("bad value %s for default policy" % (default,))
674 686
675 def prep(self, archive_filename, extractor): 687 def prep(self, archive_filename, extractor):
676 question = ["%s contains one %s, but it has a weird name." % 688 question = ["%s contains one %s, but it has a weird name." %
677 (archive_filename, extractor.content_type)] 689 (archive_filename, extractor.content_type)]
678 question.append(" Expected: " + extractor.basename()) 690 question.append(" Expected: " + extractor.basename())
1010 parser = optparse.OptionParser( 1022 parser = optparse.OptionParser(
1011 usage="%prog [options] archive [archive2 ...]", 1023 usage="%prog [options] archive [archive2 ...]",
1012 description="Intelligent archive extractor", 1024 description="Intelligent archive extractor",
1013 version=VERSION_BANNER 1025 version=VERSION_BANNER
1014 ) 1026 )
1015 parser.add_option('-r', '--recursive', dest='recursive',
1016 action='store_true', default=False,
1017 help='extract archives contained in the ones listed')
1018 parser.add_option('-q', '--quiet', dest='quiet',
1019 action='count', default=3,
1020 help='suppress warning/error messages')
1021 parser.add_option('-v', '--verbose', dest='verbose',
1022 action='count', default=0,
1023 help='be verbose/print debugging information')
1024 parser.add_option('-o', '--overwrite', dest='overwrite',
1025 action='store_true', default=False,
1026 help='overwrite any existing target directory')
1027 parser.add_option('-f', '--flat', '--no-directory', dest='flat',
1028 action='store_true', default=False,
1029 help="don't put contents in their own directory")
1030 parser.add_option('-l', '-t', '--list', '--table', dest='show_list', 1027 parser.add_option('-l', '-t', '--list', '--table', dest='show_list',
1031 action='store_true', default=False, 1028 action='store_true', default=False,
1032 help="list contents of archives on standard output") 1029 help="list contents of archives on standard output")
1030 parser.add_option('-m', '--metadata', dest='metadata',
1031 action='store_true', default=False,
1032 help="extract metadata from a .deb/.gem")
1033 parser.add_option('-r', '--recursive', dest='recursive',
1034 action='store_true', default=False,
1035 help="extract archives contained in the ones listed")
1036 parser.add_option('--one', '--one-entry', dest='one_entry_default',
1037 default=None,
1038 help=("specify extraction policy for one-entry " +
1039 "archives: inside/rename/here"))
1033 parser.add_option('-n', '--noninteractive', dest='batch', 1040 parser.add_option('-n', '--noninteractive', dest='batch',
1034 action='store_true', default=False, 1041 action='store_true', default=False,
1035 help="don't ask how to handle special cases") 1042 help="don't ask how to handle special cases")
1036 parser.add_option('-m', '--metadata', dest='metadata', 1043 parser.add_option('-o', '--overwrite', dest='overwrite',
1037 action='store_true', default=False, 1044 action='store_true', default=False,
1038 help="extract metadata from a .deb/.gem") 1045 help="overwrite any existing target output")
1046 parser.add_option('-f', '--flat', '--no-directory', dest='flat',
1047 action='store_true', default=False,
1048 help="extract everything to the current directory")
1049 parser.add_option('-v', '--verbose', dest='verbose',
1050 action='count', default=0,
1051 help="be verbose/print debugging information")
1052 parser.add_option('-q', '--quiet', dest='quiet',
1053 action='count', default=3,
1054 help="suppress warning/error messages")
1039 self.options, filenames = parser.parse_args(arguments) 1055 self.options, filenames = parser.parse_args(arguments)
1040 if not filenames: 1056 if not filenames:
1041 parser.error("you did not list any archives") 1057 parser.error("you did not list any archives")
1042 # This makes WARNING is the default. 1058 # This makes WARNING is the default.
1043 self.options.log_level = (10 * (self.options.quiet - 1059 self.options.log_level = (10 * (self.options.quiet -
1044 self.options.verbose)) 1060 self.options.verbose))
1045 self.options.one_entry_policy = OneEntryPolicy(self.options) 1061 try:
1062 self.options.one_entry_policy = OneEntryPolicy(self.options)
1063 except ValueError:
1064 parser.error("invalid value for --one-entry option")
1046 self.options.recursion_policy = RecursionPolicy(self.options) 1065 self.options.recursion_policy = RecursionPolicy(self.options)
1047 self.archives = {os.path.realpath(os.curdir): filenames} 1066 self.archives = {os.path.realpath(os.curdir): filenames}
1048 1067
1049 def setup_logger(self): 1068 def setup_logger(self):
1050 logging.getLogger().setLevel(self.options.log_level) 1069 logging.getLogger().setLevel(self.options.log_level)

mercurial