Initial commit
This commit is contained in:
52
skills/cli-patterns/templates/click-basic.py
Normal file
52
skills/cli-patterns/templates/click-basic.py
Normal file
@@ -0,0 +1,52 @@
|
||||
#!/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={})
|
||||
Reference in New Issue
Block a user