#! /usr/bin/env python import argparse import subprocess import sys import os def build(args): parser = argparse.ArgumentParser(description='Compiling the documentation', prog="cli.py build") parser.add_argument('-v', '--verbose', action='store_true', help='verbose mode') parser.add_argument('--update_issues', action='store_true', help='update issues') parser.add_argument('--outDir', default="build", help='output directory') parser.add_argument('-w', '--watch', action='store_true', help='watch for changes') args = parser.parse_args(args) if args.verbose: print("build start") issuePath = os.path.join(args.outDir,"issues.json") if args.update_issues: if args.verbose: print("get issues") p = subprocess.run(["deno", "run", "-A","tools/getIssue.ts", "--path",issuePath]) p.check_returncode() if args.verbose: print("build issues") cmd = ["deno", "run", "-A","tools/printDocument.ts", "--issue_path", issuePath, "--outDir", args.outDir] if args.watch: cmd.append("--watch") p = subprocess.run(cmd) p.check_returncode() def help(_args): global commandList print("subcommands:") for command in commandList.keys(): print("\t", command) def issueUpdate(args): parser = argparse.ArgumentParser(description='Update issues', prog="cli.py issueUpdate") parser.add_argument('-v', '--verbose', action='store_true', help='verbose mode') parser.add_argument('--outDir', default="build", help='output directory') args = parser.parse_args(args) if args.verbose: print("update issues") issuePath = os.path.join(args.outDir,"issues.json") p = subprocess.run(["deno", "run", "-A","tools/getIssue.ts", "--path",issuePath]) p.check_returncode() commandList = { 'build': build, 'help': help, 'issueUpdate': issueUpdate } def main(): args = sys.argv if len(args) < 2: print("no subcommand", file=sys.stderr) help(args) return _command = args[0] subCommand = args[1] if subCommand not in commandList: print("Command not found", file=sys.stderr) help(args) sys.exit(1) args = args[2:] os.makedirs("build", exist_ok=True) commandList[subCommand](args) if __name__ == '__main__': main()