| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- #!/usr/bin/env python3
- from flipper.app import App
- import json
- import pathlib
- class Main(App):
- def init(self):
- self.subparsers = self.parser.add_subparsers(help="sub-command help")
- # generate
- self.parser_generate = self.subparsers.add_parser(
- "generate", help="Check source code format and file names"
- )
- self.parser_generate.add_argument("-p", dest="path", required=True)
- self.parser_generate.set_defaults(func=self.generate)
- def parse_sources(self, path, source_path, flags_path):
- flags = ""
- with open(path + "/" + flags_path) as f:
- for line in f:
- if line.strip():
- flags += line.strip() + " "
- local_path = str(pathlib.Path().resolve())
- data = []
- with open(path + "/" + source_path) as f:
- for line in f:
- if line.strip():
- file = line.strip()
- data.append(
- {
- "directory": local_path,
- "command": flags + "-c " + file,
- "file": file,
- }
- )
- return data
- def generate(self):
- DB_SOURCE = [
- {
- "name": "ASM",
- "source": "db.asm_source.list",
- "flags": "db.asm_flags.list",
- },
- {"name": "C", "source": "db.c_source.list", "flags": "db.c_flags.list"},
- {
- "name": "CPP",
- "source": "db.cpp_source.list",
- "flags": "db.cpp_flags.list",
- },
- ]
- path = self.args.path
- out_data = []
- out_path = path + "/" + "compile_commands.json"
- out_file = open(out_path, mode="w")
- for record in DB_SOURCE:
- self.logger.info(
- f"Processing {record['name']} ({record['source']}, {record['flags']})"
- )
- data = self.parse_sources(path, record["source"], record["flags"])
- out_data += data
- self.logger.info(f"Saving")
- json.dump(out_data, out_file, indent=2)
- self.logger.info(f"Compilation DB written to " + out_path)
- return 0
- if __name__ == "__main__":
- Main()()
|