Files
curl-converter-cli/curlconverter/cli.py
7000pctAUTO 527c79e3cd
Some checks failed
CI / test (push) Has been cancelled
Fix CI issues: add workflow file and fix lint errors
2026-03-22 10:54:00 +00:00

69 lines
1.8 KiB
Python

{"""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()