From db80754abcc49b8331a6da9d30c04dfcde815bc2 Mon Sep 17 00:00:00 2001 From: Greg Ward Date: Sat, 22 Apr 2000 03:09:56 +0000 Subject: Extracted the "what-do-I-do-for-this-format" logic from code in 'make_archive()' to a global static dictionary, ARCHIVE_FORMATS. Added 'check_archive_formats()', which obviously makes good use of this dictionary. --- Lib/distutils/archive_util.py | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) (limited to 'Lib/distutils/archive_util.py') diff --git a/Lib/distutils/archive_util.py b/Lib/distutils/archive_util.py index a28eed1ad8..bae425be06 100644 --- a/Lib/distutils/archive_util.py +++ b/Lib/distutils/archive_util.py @@ -102,6 +102,20 @@ def make_zipfile (base_name, base_dir, verbose=0, dry_run=0): # make_zipfile () +ARCHIVE_FORMATS = { + 'gztar': (make_tarball, [('compress', 'gzip')]), + 'ztar': (make_tarball, [('compress', 'compress')]), + 'tar': (make_tarball, [('compress', None)]), + 'zip': (make_zipfile, []) + } + +def check_archive_formats (formats): + for format in formats: + if not ARCHIVE_FORMATS.has_key(format): + return format + else: + return None + def make_archive (base_name, format, root_dir=None, base_dir=None, verbose=0, dry_run=0): @@ -130,18 +144,14 @@ def make_archive (base_name, format, kwargs = { 'verbose': verbose, 'dry_run': dry_run } - if format == 'gztar': - func = make_tarball - kwargs['compress'] = 'gzip' - elif format == 'ztar': - func = make_tarball - kwargs['compress'] = 'compress' - elif format == 'tar': - func = make_tarball - kwargs['compress'] = None - elif format == 'zip': - func = make_zipfile + try: + format_info = ARCHIVE_FORMATS[format] + except KeyError: + raise ValueError, "unknown archive format '%s'" % format + func = format_info[0] + for (arg,val) in format_info[1]: + kwargs[arg] = val apply (func, (base_name, base_dir), kwargs) if root_dir is not None: -- cgit v1.2.1