X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=kll_lib%2Fbackends.py;h=69c57b51c66304d70c5609431e1260634212bd48;hb=57d01ed8725f2d06bd157d2355bb149172708b3b;hp=38ce9168b28a317298a9c3de8cd72b2cdb41ec90;hpb=7d0094ed3affc1219a83caf5cc2422ea0923816f;p=kiibohd-kll.git diff --git a/kll_lib/backends.py b/kll_lib/backends.py index 38ce916..69c57b5 100644 --- a/kll_lib/backends.py +++ b/kll_lib/backends.py @@ -36,30 +36,33 @@ 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, templatePath, definesTemplatePath ): - # Does template exist? - if not os.path.isfile( templatePath ): - print ( "{0} '{1}' does not exist...".format( ERROR, templatePath ) ) - sys.exit( 1 ) - - self.definesTemplatePath = definesTemplatePath - self.templatePath = templatePath + def __init__( self, templatePaths ): + # Use defaults if no template is specified + if templatePaths is not None: + self.templatePaths = templatePaths + self.fill_dict = dict() - # Generate list of fill tags + # Process each template and add to tagList self.tagList = [] - with open( templatePath, 'r' ) as openFile: - for line in openFile: - match = re.findall( '<\|([^|>]+)\|>', line ) - for item in match: - self.tagList.append( item ) - with open( definesTemplatePath, 'r' ) as openFile: - for line in openFile: - match = re.findall( '<\|([^|>]+)\|>', line ) - for item in match: - self.tagList.append( item ) + for templatePath in self.templatePaths: + # Does template exist? + if not os.path.isfile( templatePath ): + print ( "{0} '{1}' does not exist...".format( ERROR, templatePath ) ) + sys.exit( 1 ) + + # Generate list of fill tags + with open( templatePath, 'r' ) as openFile: + for line in openFile: + match = re.findall( '<\|([^|>]+)\|>', line ) + for item in match: + self.tagList.append( item ) # USB Code Capability Name @@ -69,44 +72,33 @@ class BackendBase: # Processes content for fill tags and does any needed dataset calculations + # XXX Make sure to override def process( self, capabilities, macros, variables, gitRev, gitChanges ): print ( "{0} BackendBase 'process' function must be overridden".format( ERROR ) ) sys.exit( 2 ) # Generates the output keymap with fill tags filled - def generate( self, outputPath, definesOutputPath ): - # Process each line of the template, outputting to the target path - with open( outputPath, 'w' ) as outputFile: - with open( self.templatePath, 'r' ) as templateFile: - for line in templateFile: - # TODO Support multiple replacements per line - # TODO Support replacement with other text inline - match = re.findall( '<\|([^|>]+)\|>', line ) - - # If match, replace with processed variable - if match: - outputFile.write( self.fill_dict[ match[ 0 ] ] ) - outputFile.write("\n") - - # Otherwise, just append template to output file - else: - outputFile.write( line ) - - # Process each line of the defines template, outputting to the target path - with open( definesOutputPath, 'w' ) as outputFile: - with open( self.definesTemplatePath, 'r' ) as templateFile: - for line in templateFile: - # TODO Support multiple replacements per line - # TODO Support replacement with other text inline - match = re.findall( '<\|([^|>]+)\|>', line ) - - # If match, replace with processed variable - if match: - outputFile.write( self.fill_dict[ match[ 0 ] ] ) - outputFile.write("\n") - - # Otherwise, just append template to output file - else: - outputFile.write( line ) + 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: + with open( templatePath, 'r' ) as templateFile: + for line in templateFile: + # TODO Support multiple replacements per line + # TODO Support replacement with other text inline + match = re.findall( '<\|([^|>]+)\|>', line ) + + # If match, replace with processed variable + if match: + outputFile.write( self.fill_dict[ match[ 0 ] ] ) + outputFile.write("\n") + + # Otherwise, just append template to output file + else: + outputFile.write( line )