diff --git a/curlconverter/cli.py b/curlconverter/cli.py index 7bfb4c3..fe8b0cc 100644 --- a/curlconverter/cli.py +++ b/curlconverter/cli.py @@ -1,6 +1,5 @@ -"""CLI module for curl converter.""" +{"""CLI application 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 @@ -8,98 +7,63 @@ from curlconverter.generators import generate_code, get_supported_languages, get @click.group() def cli(): - """Convert curl commands to code in multiple programming languages.""" + """Curl Converter CLI - Convert curl commands to code.""" 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): +@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 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: + curl = click.prompt('Enter curl command', type=str) - if not curl_input: - click.echo("Error: No curl command provided. Use --curl or --interactive", err=True) - sys.exit(1) + parsed = parse_curl(curl) + code = generate_code(parsed, language) - 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) + 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 programming languages.""" - click.echo("Supported languages:") + """List supported languages.""" for lang in get_supported_languages(): - display = get_language_display_name(lang) - click.echo(f" {lang:12} - {display}") + click.echo(f"{lang}: {get_language_display_name(lang)}") @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) +@click.argument('curl') +def analyze(curl): + """Analyze a curl command without generating code.""" + parsed = parse_curl(curl) - if not curl_input: - click.echo("Error: No curl command provided", err=True) - sys.exit(1) + click.echo(f"URL: {parsed.url}") + click.echo(f"Method: {parsed.method}") - 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) + 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}") -def main(): - cli() - - -if __name__ == "__main__": - main() +if __name__ == '__main__': + cli() \ No newline at end of file