import os import typer from pathlib import Path from database import Shelf from utils import die app = typer.Typer() project_subcommand = typer.Typer() app.add_typer(project_subcommand, name='project') entries: dict = { 'dirs': [], 'projects': [], 'config': {} } @project_subcommand.command('add') def project_add(path: Path, name: str = None, runner: str = None, editor: str = 'code', multi: bool = False): global entries if multi: die('Cannot specify name for a dir', 2) if name else None for dir in os.listdir(path): entries['dirs'].append(create_entry(path/dir, name, runner, editor)) else: entries['projects'].append(create_entry(path, name, runner, editor)) with Shelf('spyglass') as shelf: shelf.update(entries) def create_entry(path: Path, name: str, runner: str, editor: str): if not name: name = os.path.dirname(path) if not runner: runner = None if not editor: editor = None return {name: {'path': str(path.resolve()), 'runner': str(path/runner) if runner else None, 'editor': editor}} def main(): app() if __name__ == '__main__': main()