Moving __main__ functions to cli for being able to do few sequences in one launch

This commit is contained in:
MaXFeeD
2025-03-31 01:51:34 +03:00
parent 10292c36ed
commit 43d901c90e
2 changed files with 77 additions and 67 deletions
+2 -67
View File
@@ -1,67 +1,2 @@
import sys
if "--help" in sys.argv or len(sys.argv) <= 1:
print("Usage: icmtoolchain [options] ... <task1> [arguments1] ...")
print(" " * 2 + "--help: Display this message.")
print(" " * 2 + "--list: See available tasks.")
print("Performs commands marked with a special decorator @task.")
print("Example: icmtoolchain selectProject --path mod1 pushEverything selectProject --path mod2 pushEverything launchApplication")
exit(0)
from .task import TASKS
if "--list" in sys.argv:
print("All availabled tasks:")
for name, task in TASKS.items():
print(" " * 2 + name, end="")
if task.description:
print(": " + task.description, end="")
print()
exit(0)
from time import time
startup_millis = time()
argv = sys.argv[1:]
from .parser import apply_environment_properties, parse_arguments
from .shell import abort, debug, error, warn
try:
targets = parse_arguments(argv, TASKS, lambda name, target, callables: warn(f"* No such task: {name}."))
except (TypeError, ValueError) as err:
error(" ".join(argv))
abort(cause=err)
apply_environment_properties()
anything_performed = False
tasks = iter(targets)
while True:
try:
callable = next(tasks)
except StopIteration:
break
else:
try:
result = callable.callable()
if result != 0:
abort(f"* Task {callable.name} failed with result {result}.", code=result)
except BaseException as err:
if isinstance(err, SystemExit):
raise err
from .utils import RuntimeCodeError
if isinstance(err, RuntimeCodeError):
abort(f"* Task {callable.name} failed with error code #{err.code}: {err}")
abort(f"* Task {callable.name} failed with unexpected error!", cause=err)
anything_performed = True
if not anything_performed:
debug("* No tasks to execute.")
exit(0)
from .task import unlock_all_tasks
unlock_all_tasks()
startup_millis = time() - startup_millis
debug(f"* Tasks successfully completed in {startup_millis:.2f}s!")
from .cli import run
run()
+75
View File
@@ -0,0 +1,75 @@
import sys
from typing import Optional
def show_help():
print("Usage: icmtoolchain [options] ... <task1> [arguments1] ...")
print(" " * 2 + "--help: Display this message.")
print(" " * 2 + "--list: See available tasks.")
print("Perform commands marked with a special decorator @task.")
print("Example: icmtoolchain selectProject --path mod1 pushEverything selectProject --path mod2 pushEverything launchApplication")
def show_available_tasks():
from .task import TASKS
print("All available tasks:")
for name, task in TASKS.items():
print(" " * 2 + name, end="")
if task.description:
print(": " + task.description, end="")
print()
def run(argv: Optional[list[str]] = None):
if not argv or len(argv) == 0:
argv = sys.argv
if "--help" in argv or len(argv) <= 1:
show_help()
exit(0)
if "--list" in argv:
show_available_tasks()
exit(0)
from time import time
startup_millis = time()
argv = argv[1:]
from .parser import apply_environment_properties, parse_arguments
from .shell import abort, debug, error, warn
from .task import TASKS
try:
targets = parse_arguments(argv, TASKS, lambda name, target, callables: warn(f"* No such task: {name}."))
except (TypeError, ValueError) as err:
error(" ".join(argv))
abort(cause=err)
apply_environment_properties()
anything_performed = False
tasks = iter(targets)
while True:
try:
callable = next(tasks)
except StopIteration:
break
else:
try:
result = callable.callable()
if result != 0:
abort(f"* Task {callable.name} failed with result {result}.", code=result)
except BaseException as err:
if isinstance(err, SystemExit):
raise err
from .utils import RuntimeCodeError
if isinstance(err, RuntimeCodeError):
abort(f"* Task {callable.name} failed with error code #{err.code}: {err}")
abort(f"* Task {callable.name} failed with unexpected error!", cause=err)
anything_performed = True
if not anything_performed:
debug("* No tasks to execute.")
exit(0)
from .task import unlock_all_tasks
unlock_all_tasks()
startup_millis = time() - startup_millis
debug(f"* Tasks successfully completed in {startup_millis:.2f}s!")