53 lines
1.3 KiB
Python
53 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
# Python equivalent using click (similar API to urfave/cli)
|
|
|
|
import click
|
|
|
|
@click.group()
|
|
@click.version_option('0.1.0')
|
|
@click.option('--verbose', '-v', is_flag=True, help='Enable verbose output')
|
|
@click.option('--config', '-c', envvar='CONFIG_PATH', help='Path to config file')
|
|
@click.pass_context
|
|
def cli(ctx, verbose, config):
|
|
"""A simple CLI application"""
|
|
ctx.ensure_object(dict)
|
|
ctx.obj['verbose'] = verbose
|
|
ctx.obj['config'] = config
|
|
|
|
if verbose:
|
|
click.echo('Verbose mode enabled')
|
|
|
|
if config:
|
|
click.echo(f'Using config: {config}')
|
|
|
|
@cli.command()
|
|
@click.option('--port', '-p', default=8080, help='Port to listen on')
|
|
@click.pass_context
|
|
def start(ctx, port):
|
|
"""Start the service"""
|
|
if ctx.obj['verbose']:
|
|
click.echo(f'Starting service on port {port}')
|
|
else:
|
|
click.echo(f'Starting on port {port}')
|
|
|
|
@cli.command()
|
|
@click.pass_context
|
|
def stop(ctx):
|
|
"""Stop the service"""
|
|
click.echo('Stopping service...')
|
|
|
|
@cli.command()
|
|
def status():
|
|
"""Check service status"""
|
|
click.echo('Service is running')
|
|
|
|
@cli.command()
|
|
@click.argument('key')
|
|
@click.argument('value')
|
|
def config(key, value):
|
|
"""Set configuration value"""
|
|
click.echo(f'Setting {key} = {value}')
|
|
|
|
if __name__ == '__main__':
|
|
cli(obj={})
|