Source code for isek.cli

#!/usr/bin/env python
import click
import importlib.util
import sys
from pathlib import Path

[docs] def load_module(script_path: Path): """Dynamically load module""" try: module_name = script_path.stem spec = importlib.util.spec_from_file_location(module_name, script_path) module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) return module except Exception as e: click.secho(f"Module load error: {e}", fg="red") sys.exit(1)
[docs] def get_available_examples(ctx, args, incomplete): """Get available example scripts""" examples_dir = Path(__file__).parent.parent / "examples" return [ f.stem for f in examples_dir.glob("*.py") if f.name != "__init__.py" and not f.name.startswith('_') and f.stem.startswith(incomplete) ]
@click.group() def cli(): """ISEK Distributed Multi-Agent Framework CLI""" @cli.command() def clean(): """Run system cleanup script""" script_path = Path(__file__).parent.parent / "scripts" / "clean.py" module = load_module(script_path) module.main() click.secho("✓ Cleanup completed", fg="green") @cli.command() def registry(): """Start local development registry""" from isek.isek_center import main main() @cli.group() def example(): """Example script management""" @example.command() def list(): """List available example scripts""" examples_dir = Path(__file__).parent.parent / "examples" examples = [ f.stem for f in examples_dir.glob("*.py") if f.name != "__init__.py" and not f.name.startswith('_') ] click.echo("Available examples:") for name in sorted(examples): click.echo(f" • {name}") @example.command(context_settings=dict( ignore_unknown_options=True, allow_extra_args=True )) @click.argument('name', type=click.STRING, shell_complete=get_available_examples ) @click.pass_context def run(ctx, name: str): """Execute specific example script""" script_path = Path(__file__).parent.parent / "examples" / f"{name}.py" module = load_module(script_path) if hasattr(module, 'main'): extra_args = ctx.args module.main(*extra_args) if extra_args else module.main() click.secho(f"✓ Example '{name}' completed", fg="green") else: click.secho(f"✗ Example '{name}' lacks main() function", fg="red") sys.exit(1) if __name__ == "__main__": cli()