| #!/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])) |