def main(args): if args["help"]: print __doc__.rstrip() return None if not args["run"]: if args["--verbose"]: COMMAND_DEFAULTS["mvn"] = "mvn" logging.basicConfig(level=logging.DEBUG) log = logging.getLogger("quark") log.propagate = False hnd = ProgressHandler(verbose=args["--verbose"]) log.addHandler(hnd) hnd.setFormatter(logging.Formatter("%(message)s")) helpers.Code.identifier = "Quark %s run at %s" % (_metadata.__version__, datetime.datetime.now()) java = args["--java"] ruby = args["--ruby"] python = args["--python"] javascript = args["--javascript"] all = args["--all"] or not (java or python or javascript or ruby) output = args["--output"] try: backends = [] if java or all: check("mvn", ".") backends.append(backend.Java) if ruby or all: backends.append(backend.Ruby) if python or all: check("python", ".") backends.append(backend.Python) if javascript or all: check("npm", ".") backends.append(backend.JavaScript) filenames = args["<file>"] for url in filenames: if args["install"]: compiler.install(url, *backends) elif args["compile"]: compiler.compile(url, output, *backends) elif args["run"]: compiler.run(url, args["<args>"], *backends) else: assert False except compiler.QuarkError as err: command_log.warn("") return err command_log.warn("Done")
def main(args): if args["help"]: print __doc__.rstrip() return None do_log = not args["run"] or args["--verbose"] if do_log: if args["--verbose"]: shell.COMMAND_DEFAULTS["mvn"] = "mvn" logging.basicConfig(level=logging.DEBUG) log = logging.getLogger("quark") log.propagate = False hnd = ProgressHandler(verbose=args["--verbose"]) log.addHandler(hnd) hnd.setFormatter(logging.Formatter("%(message)s")) version = "Quark %s run at %s" % (_metadata.__version__, datetime.datetime.now()) helpers.Code.identifier = version java = args["--java"] ruby = args["--ruby"] python = args["--python"] python3 = args["--python3"] javascript = args["--javascript"] all = args["--all"] or not (java or python or javascript or ruby or python3) output = args["--output"] offline = not args["--online"] try: shell.command_log.info("Checking environment") backends = [] if java or all: if args["install"]: shell.check("mvn") backends.append(backend.Java) if ruby or all: if args["install"]: shell.check("gem") backends.append(backend.Ruby) if python or all: if args["install"]: shell.check("python2") shell.check("pip2") backends.append(backend.Python) if python3 or all: if args["install"]: shell.check("python3") shell.check("pip3") backends.append(backend.Python3) if javascript or all: if args["install"]: shell.check("npm") backends.append(backend.JavaScript) filenames = args["<file>"] or [ compiler.join(None, compiler.BUILTIN_FILE) ] for url in filenames: c = compiler.Compiler(args["--include-stdlib"]) c.version_warning = args["--version-warning"] if args["install"]: compiler.install(c, url, offline, *backends) elif args["compile"]: compiler.compile(c, url, output, *backends) elif args["run"]: compiler.run(c, url, args["<args>"], *backends) elif args["docs"]: compiler.make_docs(c, url, output, args["--include-private"]) else: assert False except (KeyboardInterrupt, QuarkError) as err: if not args["run"]: shell.command_log.error("") if args["install"] and offline and isinstance(err, shell.ShellError): err = str(err) + "\n\n" err += "Please retry the command with the --online switch\n\n" err += " quark install --online " for opt in "--verbose --java --javascript --ruby --python --python3".split( ): if args[opt]: err += opt + " " err += " ".join(shell.quote(f) for f in args["<file>"]) err += "\n" return err except: # pylint: disable=bare-except if do_log: import inspect ast_stack = helpers.format_ast_stack(inspect.trace()) shell.command_log.error( "\n -- snip --\nInternal compiler error, %s\n\n" % version, exc_info=True) if ast_stack: shell.command_log.error("\nCompiler was looking at:\n%s\n" % ast_stack) instructions = textwrap.dedent("""\ Your code triggered an internal compiler error. Please report the issue at https://github.com/datawire/quark/issues """) if do_log: instructions += textwrap.dedent("""\ Please attach the above report up until the -- snip -- line with the issue. If at all possible also attach the quark file that caused the error. """) else: instructions += textwrap.dedent("""\ Please re-run the quark command with --verbose flag to get the full report. """) return instructions shell.command_log.warn("Done")
def main(args): if args["help"]: print __doc__.rstrip() return None do_log = not args["run"] or args["--verbose"] if do_log: if args["--verbose"]: shell.COMMAND_DEFAULTS["mvn"] = "mvn" logging.basicConfig(level=logging.DEBUG) log = logging.getLogger("quark") log.propagate = False hnd = ProgressHandler(verbose=args["--verbose"]) log.addHandler(hnd) hnd.setFormatter(logging.Formatter("%(message)s")) version = "Quark %s run at %s" % (_metadata.__version__, datetime.datetime.now()) helpers.Code.identifier = version java = args["--java"] ruby = args["--ruby"] python = args["--python"] python3 = args["--python3"] javascript = args["--javascript"] all = args["--all"] or not (java or python or javascript or ruby or python3) output = args["--output"] offline = not args["--online"] try: shell.command_log.info("Checking environment") backends = [] if java or all: if args["install"]: shell.check("mvn") backends.append(backend.Java) if ruby or all: if args["install"]: shell.check("gem") backends.append(backend.Ruby) if python or all: if args["install"]: shell.check("python2") shell.check("pip2") backends.append(backend.Python) if python3 or all: if args["install"]: shell.check("python3") shell.check("pip3") backends.append(backend.Python3) if javascript or all: if args["install"]: shell.check("npm") backends.append(backend.JavaScript) filenames = args["<file>"] or [compiler.join(None, compiler.BUILTIN_FILE)] for url in filenames: c = compiler.Compiler(args["--include-stdlib"]) c.version_warning = args["--version-warning"] if args["install"]: compiler.install(c, url, offline, *backends) elif args["compile"]: compiler.compile(c, url, output, *backends) elif args["run"]: compiler.run(c, url, args["<args>"], *backends) elif args["docs"]: compiler.make_docs(c, url, output, args["--include-private"]) else: assert False except (KeyboardInterrupt, QuarkError) as err: if not args["run"]: shell.command_log.error("") if args["install"] and offline and isinstance(err, shell.ShellError): err = str(err) + "\n\n" err += "Please retry the command with the --online switch\n\n" err += " quark install --online " for opt in "--verbose --java --javascript --ruby --python --python3".split(): if args[opt]: err += opt + " " err += " ".join(shell.quote(f) for f in args["<file>"]) err += "\n" return err except: # pylint: disable=bare-except if do_log: import inspect ast_stack = helpers.format_ast_stack(inspect.trace()) shell.command_log.error("\n -- snip --\nInternal compiler error, %s\n\n" % version, exc_info=True) if ast_stack: shell.command_log.error("\nCompiler was looking at:\n%s\n" % ast_stack) instructions = textwrap.dedent("""\ Your code triggered an internal compiler error. Please report the issue at https://github.com/datawire/quark/issues """) if do_log: instructions += textwrap.dedent("""\ Please attach the above report up until the -- snip -- line with the issue. If at all possible also attach the quark file that caused the error. """) else: instructions += textwrap.dedent("""\ Please re-run the quark command with --verbose flag to get the full report. """) return instructions shell.command_log.warn("Done")