{"""CLI application for curl-converter.""" import click from curlconverter.parser import parse_curl from curlconverter.generators import generate_code, get_supported_languages, get_language_display_name @click.group() def cli(): """Curl Converter CLI - Convert curl commands to code.""" pass @cli.command() @click.option('--curl', '-c', help='Curl command to convert') @click.option('--language', '-l', default='python', help='Target language') @click.option('--output', '-o', type=click.Path(), help='Output file') def convert(curl, language, output): """Convert a curl command to code.""" if not curl: curl = click.prompt('Enter curl command', type=str) parsed = parse_curl(curl) code = generate_code(parsed, language) if output: with open(output, 'w') as f: f.write(code) click.echo(f'Code written to {output}') else: click.echo(code) @cli.command() def languages(): """List supported languages.""" for lang in get_supported_languages(): click.echo(f"{lang}: {get_language_display_name(lang)}") @cli.command() @click.argument('curl') def analyze(curl): """Analyze a curl command without generating code.""" parsed = parse_curl(curl) click.echo(f"URL: {parsed.url}") click.echo(f"Method: {parsed.method}") if parsed.headers: click.echo("Headers:") for k, v in parsed.headers.items(): click.echo(f" {k}: {v}") if parsed.data: click.echo(f"Data: {parsed.data}") if parsed.auth: click.echo(f"Auth: {parsed.auth}") if parsed.cookies: click.echo(f"Cookies: {parsed.cookies}") if parsed.user_agent: click.echo(f"User-Agent: {parsed.user_agent}") if __name__ == '__main__': cli()