"""CLI module for curl converter.""" import sys 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(): """Convert curl commands to code in multiple programming languages.""" pass @cli.command() @click.option("-c", "--curl", "curl_input", help="The curl command to convert") @click.option("-l", "--language", default="python", help="Target programming language") @click.option("-o", "--output", type=click.Path(), help="Output file path") @click.option("-i", "--interactive", is_flag=True, help="Interactive mode - paste curl command") def convert(curl_input, language, output, interactive): """Convert a curl command to code.""" if interactive: click.echo("Paste your curl command (press Ctrl+D or Ctrl+Z when done):") try: curl_input = click.edit() except Exception: curl_input = click.prompt("", type=str) if not curl_input: click.echo("Error: No curl command provided. Use --curl or --interactive", err=True) sys.exit(1) try: parsed = parse_curl(curl_input) 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) except ValueError as e: click.echo(f"Error: {e}", err=True) sys.exit(1) @cli.command() def languages(): """List supported programming languages.""" click.echo("Supported languages:") for lang in get_supported_languages(): display = get_language_display_name(lang) click.echo(f" {lang:12} - {display}") @cli.command() @click.option("-c", "--curl", "curl_input", help="The curl command to analyze") @click.option("-i", "--interactive", is_flag=True, help="Interactive mode") def analyze(curl_input, interactive): """Analyze and display parsed curl command details.""" if interactive: click.echo("Paste your curl command:") curl_input = click.prompt("", type=str) if not curl_input: click.echo("Error: No curl command provided", err=True) sys.exit(1) try: parsed = parse_curl(curl_input) click.echo("Parsed curl command:") 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[0]}:****") if parsed.cookies: click.echo(f" Cookies: {parsed.cookies}") if parsed.user_agent: click.echo(f" User-Agent: {parsed.user_agent}") except ValueError as e: click.echo(f"Error: {e}", err=True) sys.exit(1) def main(): cli() if __name__ == "__main__": main()