#!/usr/bin/python # coding: utf-8 # import json import os import sys def generate_compile_commands_from_json(infilename, outfilename, builddir = None): try: if os.path.isfile(outfilename): os.remove(outfilename) jsonFile = open(infilename,'r') outFile = open(outfilename, 'w') for command in json.load(jsonFile): # blacklist build dir if builddir: fn = command['file'] if command['file'].startswith(builddir): continue # whilelist some generated files (generated by us) - is not useful since qacpp can't handle dds data types #if not '_impl' in fn and not '_plugin.cpp' in fn: # if 'moc_' in fn: # continue # not sure why \" must be replaced with \"" - but that's the output of the old script # .acf file is not used, add some defines... cmd = ' "' + command['command'].replace('-isystem ', '-I').replace('-isystem', '-I').replace('-I ', '-I').replace('\\\\\\','\\"').replace('\"', '\""') + ' "\n' outFile.write(cmd) return True except Exception as e: print >> sys.stderr, "Error generating compile commands file '%s': %s" % (outfilename, e) return False ########### START --- CHECK FOR VALID OPTION AND PATH ########### def main(): print sys.argv[1] print sys.argv[2] try: usageOption = sys.argv[1] except: print ('''You forgot to add a OPTION -path ''') sys.exit() try: path = sys.argv[2] except: print ('''You forgot to add a PATH -path ''') sys.exit() if ( usageOption == '-path'): jsonOrigFile = os.path.abspath(path+'/compile_commands.json') outfilename = os.path.abspath(path+'/compile_commands.txt') if not os.path.isfile(jsonOrigFile): print >> sys.stderr, "Could not find compile commands file %s... aborting" % jsonOrigFile sys.exit(1) generate_compile_commands_from_json(jsonOrigFile, outfilename) ########### END --- CHECK FOR VALID OPTION AND PATH ########### if __name__ == "__main__": main()