Files
cs249r_book/tinytorch/tito/commands/system/system.py
Vijay Janapa Reddi 6c108c6323 refactor(cli): reorganize commands and add welcome message
- Move tito update → tito system update
- Move tito logo → tito system logo
- Remove tito grade (use tito nbgrader instead)
- Add first-run welcome message for new users
- Update demo scripts and docs for new command paths
2026-01-14 16:51:06 -05:00

113 lines
3.8 KiB
Python

"""
System command group for TinyTorch CLI: environment, configuration, and system tools.
"""
from argparse import ArgumentParser, Namespace
from rich.panel import Panel
from ..base import BaseCommand
from .info import InfoCommand
from .health import HealthCommand
from .jupyter import JupyterCommand
from .update import UpdateCommand
from .logo import LogoCommand
class SystemCommand(BaseCommand):
@property
def name(self) -> str:
return "system"
@property
def description(self) -> str:
return "System environment and configuration commands"
def add_arguments(self, parser: ArgumentParser) -> None:
subparsers = parser.add_subparsers(
dest='system_command',
help='System subcommands',
metavar='SUBCOMMAND'
)
# Info subcommand
info_parser = subparsers.add_parser(
'info',
help='Show system and environment information'
)
info_cmd = InfoCommand(self.config)
info_cmd.add_arguments(info_parser)
# Health subcommand
health_parser = subparsers.add_parser(
'health',
help='Environment health check and validation'
)
health_cmd = HealthCommand(self.config)
health_cmd.add_arguments(health_parser)
# Jupyter subcommand
jupyter_parser = subparsers.add_parser(
'jupyter',
help='Start Jupyter notebook server'
)
jupyter_cmd = JupyterCommand(self.config)
jupyter_cmd.add_arguments(jupyter_parser)
# Update subcommand
update_parser = subparsers.add_parser(
'update',
help='Check for and install updates'
)
update_cmd = UpdateCommand(self.config)
update_cmd.add_arguments(update_parser)
# Logo subcommand
logo_parser = subparsers.add_parser(
'logo',
help='Learn about the TinyTorch logo and its meaning'
)
logo_cmd = LogoCommand(self.config)
logo_cmd.add_arguments(logo_parser)
def run(self, args: Namespace) -> int:
console = self.console
if not hasattr(args, 'system_command') or not args.system_command:
console.print(Panel(
"[bold cyan]System Commands[/bold cyan]\n\n"
"Available subcommands:\n"
" • [bold]info[/bold] - Show system/environment information\n"
" • [bold]health[/bold] - Environment health check and validation\n"
" • [bold]jupyter[/bold] - Start Jupyter notebook server\n"
" • [bold]update[/bold] - Check for and install updates\n"
" • [bold]logo[/bold] - Learn about the TinyTorch logo\n\n"
"[dim]Example: tito system health[/dim]",
title="System Command Group",
border_style="bright_cyan"
))
return 0
# Execute the appropriate subcommand
if args.system_command == 'info':
cmd = InfoCommand(self.config)
return cmd.execute(args)
elif args.system_command == 'health':
cmd = HealthCommand(self.config)
return cmd.execute(args)
elif args.system_command == 'jupyter':
cmd = JupyterCommand(self.config)
return cmd.execute(args)
elif args.system_command == 'update':
cmd = UpdateCommand(self.config)
return cmd.execute(args)
elif args.system_command == 'logo':
cmd = LogoCommand(self.config)
return cmd.execute(args)
else:
console.print(Panel(
f"[red]Unknown system subcommand: {args.system_command}[/red]",
title="Error",
border_style="red"
))
return 1