diff --git a/backends/kiibohd.py b/backends/kiibohd.py index 34b570a..ca1f4fb 100644 --- a/backends/kiibohd.py +++ b/backends/kiibohd.py @@ -36,6 +36,10 @@ from kll_lib.backends import * ### Classes ### class Backend( BackendBase ): + # Default templates and output files + templatePaths = ["templates/kiibohdKeymap.h", "templates/kiibohdDefs.h"] + outputPaths = ["generatedKeymap.h", "kll_defs.h"] + # USB Code Capability Name def usbCodeCapability( self ): return "usbKeyOut"; diff --git a/kll.py b/kll.py index eab3098..2ddd35a 100755 --- a/kll.py +++ b/kll.py @@ -83,7 +83,8 @@ def processCommandLineArgs(): # Optional Arguments pArgs.add_argument( '-b', '--backend', type=str, default="kiibohd", help="Specify target backend for the KLL compiler.\n" - "Default: kiibohd" ) + "Default: kiibohd\n" + "Options: kiibohd, json" ) pArgs.add_argument( '-d', '--default', type=str, nargs='+', help="Specify .kll files to layer on top of the default map to create a combined map." ) pArgs.add_argument( '-p', '--partial', type=str, nargs='+', action='append', @@ -91,13 +92,11 @@ def processCommandLineArgs(): "Each -p defines another partial map.\n" "Base .kll files (that define the scan code maps) must be defined for each partial map." ) pArgs.add_argument( '-t', '--templates', type=str, nargs='+', - default=["templates/kiibohdKeymap.h", "templates/kiibohdDefs.h"], help="Specify template used to generate the keymap.\n" - "Default: templates/kiibohdKeymap.h templates/kiibohdDefs.h" ) + "Default: " ) pArgs.add_argument( '-o', '--outputs', type=str, nargs='+', - default=["generatedKeymap.h", "kll_defs.h"], help="Specify output file. Writes to current working directory by default.\n" - "Default: generatedKeymap.h kll_defs.h" ) + "Default: " ) pArgs.add_argument( '-h', '--help', action="help", help="This message." ) diff --git a/kll_lib/backends.py b/kll_lib/backends.py index 09d430d..69c57b5 100644 --- a/kll_lib/backends.py +++ b/kll_lib/backends.py @@ -36,15 +36,22 @@ WARNING = '\033[5;1;33mWARNING\033[0m:' ### Classes ### class BackendBase: + # Default templates and output files + templatePaths = [] + outputPaths = [] + # Initializes backend # Looks for template file and builds list of fill tags - def __init__( self, templatePaths=[] ): - self.templatePaths = templatePaths + def __init__( self, templatePaths ): + # Use defaults if no template is specified + if templatePaths is not None: + self.templatePaths = templatePaths + self.fill_dict = dict() # Process each template and add to tagList self.tagList = [] - for templatePath in templatePaths: + for templatePath in self.templatePaths: # Does template exist? if not os.path.isfile( templatePath ): print ( "{0} '{1}' does not exist...".format( ERROR, templatePath ) ) @@ -73,6 +80,10 @@ class BackendBase: # Generates the output keymap with fill tags filled def generate( self, outputPaths ): + # Use default if not specified + if outputPaths is None: + outputPaths = self.outputPaths + for templatePath, outputPath in zip( self.templatePaths, outputPaths ): # Process each line of the template, outputting to the target path with open( outputPath, 'w' ) as outputFile: