Эх сурвалжийг харах

gw: Dynamically load required module for image-file parsing.

Keir Fraser 4 жил өмнө
parent
commit
03c52f8b97

+ 8 - 6
scripts/greaseweazle/tools/util.py

@@ -8,15 +8,12 @@
 # See the file COPYING for more details, or visit <http://unlicense.org>.
 
 import argparse, os, sys, serial, struct, time
+import importlib
 import serial.tools.list_ports
 
 from greaseweazle import version
 from greaseweazle import error
 from greaseweazle import usb as USB
-from greaseweazle.image.scp import SCP
-from greaseweazle.image.hfe import HFE
-from greaseweazle.image.ipf import IPF
-from greaseweazle.image.adf import ADF
 
 
 class CmdlineHelpFormatter(argparse.ArgumentDefaultsHelpFormatter):
@@ -66,11 +63,16 @@ def split_opts(seq):
 
 
 def get_image_class(name):
-    image_types = { '.adf': ADF, '.scp': SCP, '.hfe': HFE, '.ipf': IPF }
+    image_types = { '.adf': 'ADF',
+                    '.scp': 'SCP',
+                    '.hfe': 'HFE',
+                    '.ipf': 'IPF' }
     _, ext = os.path.splitext(name)
     error.check(ext.lower() in image_types,
                 "%s: Unrecognised file suffix '%s'" % (name, ext))
-    return image_types[ext.lower()]
+    typename = image_types[ext.lower()]
+    mod = importlib.import_module('greaseweazle.image.' + typename.lower())
+    return mod.__dict__[typename]
 
 
 def with_drive_selected(fn, usb, args, *_args, **_kwargs):