69 lines
1.8 KiB
Python
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() |