#!/usr/bin/env python # # transform_sql.py -- create a header file with the appropriate SQL variables # from an SQL file # import os import re import sys def usage_and_exit(msg): if msg: sys.stderr.write('%s\n\n' % msg) sys.stderr.write( 'USAGE: %s SQLITE_FILE [OUTPUT_FILE]\n' ' stdout will be used if OUTPUT_FILE is not provided.\n' % os.path.basename(sys.argv[0])) sys.stderr.flush() sys.exit(1) def main(input, output, filename): input = input.read() var_name = re.sub('[-.]', '_', filename) output.write( '/* This file is automatically generated from %s.\n' ' * Do not edit this file -- edit the source and rerun gen-make.py */\n' '\n' % (filename,)) output.write('#define %s \\\n' % var_name.upper()) regex = re.compile(r'/\*.*?\*/', re.MULTILINE|re.DOTALL) input = regex.sub('', input) for line in input.split('\n'): line = line.replace('"', '\\"') if line.strip(): # got something besides whitespace. write it out. output.write(' "' + line + '"\\\n') output.write(' ""\n') if __name__ == '__main__': if len(sys.argv) < 2 or len(sys.argv) > 3: usage_and_exit('Incorrect number of arguments') # Note: we could use stdin, but then we'd have no var_name input_file = open(sys.argv[1], 'r') if len(sys.argv) > 2: output_file = open(sys.argv[2], 'w') else: output_file = sys.stdout main(input_file, output_file, os.path.basename(sys.argv[1]))