Browse Source

Adding backend specific template and output defaults.

simple
Jacob Alexander 9 years ago
parent
commit
8442567937
3 changed files with 22 additions and 8 deletions
  1. 4
    0
      backends/kiibohd.py
  2. 4
    5
      kll.py
  3. 14
    3
      kll_lib/backends.py

+ 4
- 0
backends/kiibohd.py View File

### Classes ### ### Classes ###


class Backend( BackendBase ): 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 # USB Code Capability Name
def usbCodeCapability( self ): def usbCodeCapability( self ):
return "usbKeyOut"; return "usbKeyOut";

+ 4
- 5
kll.py View File

# Optional Arguments # Optional Arguments
pArgs.add_argument( '-b', '--backend', type=str, default="kiibohd", pArgs.add_argument( '-b', '--backend', type=str, default="kiibohd",
help="Specify target backend for the KLL compiler.\n" 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='+', 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." ) 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', pArgs.add_argument( '-p', '--partial', type=str, nargs='+', action='append',
"Each -p defines another partial map.\n" "Each -p defines another partial map.\n"
"Base .kll files (that define the scan code maps) must be defined for each partial map." ) "Base .kll files (that define the scan code maps) must be defined for each partial map." )
pArgs.add_argument( '-t', '--templates', type=str, nargs='+', pArgs.add_argument( '-t', '--templates', type=str, nargs='+',
default=["templates/kiibohdKeymap.h", "templates/kiibohdDefs.h"],
help="Specify template used to generate the keymap.\n" help="Specify template used to generate the keymap.\n"
"Default: templates/kiibohdKeymap.h templates/kiibohdDefs.h" )
"Default: <backend specific>" )
pArgs.add_argument( '-o', '--outputs', type=str, nargs='+', 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" help="Specify output file. Writes to current working directory by default.\n"
"Default: generatedKeymap.h kll_defs.h" )
"Default: <backend specific>" )
pArgs.add_argument( '-h', '--help', action="help", pArgs.add_argument( '-h', '--help', action="help",
help="This message." ) help="This message." )



+ 14
- 3
kll_lib/backends.py View File

### Classes ### ### Classes ###


class BackendBase: class BackendBase:
# Default templates and output files
templatePaths = []
outputPaths = []

# Initializes backend # Initializes backend
# Looks for template file and builds list of fill tags # 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() self.fill_dict = dict()


# Process each template and add to tagList # Process each template and add to tagList
self.tagList = [] self.tagList = []
for templatePath in templatePaths:
for templatePath in self.templatePaths:
# Does template exist? # Does template exist?
if not os.path.isfile( templatePath ): if not os.path.isfile( templatePath ):
print ( "{0} '{1}' does not exist...".format( ERROR, templatePath ) ) print ( "{0} '{1}' does not exist...".format( ERROR, templatePath ) )


# Generates the output keymap with fill tags filled # Generates the output keymap with fill tags filled
def generate( self, outputPaths ): def generate( self, outputPaths ):
# Use default if not specified
if outputPaths is None:
outputPaths = self.outputPaths

for templatePath, outputPath in zip( self.templatePaths, outputPaths ): for templatePath, outputPath in zip( self.templatePaths, outputPaths ):
# Process each line of the template, outputting to the target path # Process each line of the template, outputting to the target path
with open( outputPath, 'w' ) as outputFile: with open( outputPath, 'w' ) as outputFile: