Source code for quick_vis

import argparse
import os
import pkgutil
import subprocess


[docs] def list_scripts(directory): return [name for _, name, _ in pkgutil.iter_modules([directory])]
[docs] class ListScriptsAction(argparse.Action): def __call__(self, parser, namespace, values, option_string=None): print("Available scripts:") for script in list_scripts(os.path.dirname(__file__)): script_path = os.path.join(os.path.dirname(__file__), f"{script}.py") print(f"\n{script} ({script_path})") # TODO: Think about moving to passing args to the script instead of directly # parsing within the main() of each script # script_module = importlib.import_module(f".{script}", package="quick_vis") try: subprocess.run(["python", script_path, "-h"], check=True) except subprocess.CalledProcessError: print(f"Failed to run --help on {script}") parser.exit()
[docs] def main(): parser = argparse.ArgumentParser( description="ytScripts Quick Visualization Packages", usage="%(prog)s script [script_args] [-h] [-l]", ) parser.add_argument( "script", nargs="?", help="Name of the script to run within the quick_vis package", ) parser.add_argument( "-l", "--list", nargs=0, help="List available scripts", action=ListScriptsAction ) args, script_args = parser.parse_known_args() if args.script: print(f"Running {args.script} script with args: {script_args}") # script = importlib.import_module(f".{args.script}", package="quick_vis") # script.main(script_args) script_path = os.path.join(os.path.dirname(__file__), f"{args.script}.py") try: subprocess.run(["python", script_path] + script_args, check=True) except subprocess.CalledProcessError: print(f"Failed to run {args.script} with args: {script_args}")