mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-25 14:55:00 +00:00
211 lines
5.5 KiB
Python
211 lines
5.5 KiB
Python
import argparse
|
|
|
|
from aider import urls
|
|
|
|
from .dump import dump # noqa: F401
|
|
|
|
|
|
class DotEnvFormatter(argparse.HelpFormatter):
|
|
def start_section(self, heading):
|
|
res = "\n\n"
|
|
res += "#" * (len(heading) + 3)
|
|
res += f"\n# {heading}"
|
|
super().start_section(res)
|
|
|
|
def _format_usage(self, usage, actions, groups, prefix):
|
|
return ""
|
|
|
|
def _format_text(self, text):
|
|
return f"""
|
|
##########################################################
|
|
# Sample aider .env file.
|
|
# Place at the root of your git repo.
|
|
# Or use `aider --env <fname>` to specify.
|
|
##########################################################
|
|
|
|
#################
|
|
# LLM parameters:
|
|
#
|
|
# Include xxx_API_KEY parameters and other params needed for your LLMs.
|
|
# See {urls.llms} for details.
|
|
|
|
## OpenAI
|
|
#OPENAI_API_KEY=
|
|
|
|
## Anthropic
|
|
#ANTHROPIC_API_KEY=
|
|
|
|
##...
|
|
"""
|
|
|
|
def _format_action(self, action):
|
|
if not action.option_strings:
|
|
return ""
|
|
|
|
if not action.env_var:
|
|
return
|
|
|
|
parts = [""]
|
|
|
|
default = action.default
|
|
if default == argparse.SUPPRESS:
|
|
default = ""
|
|
elif isinstance(default, str):
|
|
pass
|
|
elif isinstance(default, list) and not default:
|
|
default = ""
|
|
elif action.default is not None:
|
|
default = "true" if default else "false"
|
|
else:
|
|
default = ""
|
|
|
|
if action.help:
|
|
parts.append(f"## {action.help}")
|
|
|
|
if action.env_var:
|
|
env_var = action.env_var
|
|
if default:
|
|
parts.append(f"#{env_var}={default}\n")
|
|
else:
|
|
parts.append(f"#{env_var}=\n")
|
|
|
|
return "\n".join(parts) + "\n"
|
|
|
|
def _format_action_invocation(self, action):
|
|
return ""
|
|
|
|
def _format_args(self, action, default_metavar):
|
|
return ""
|
|
|
|
|
|
class YamlHelpFormatter(argparse.HelpFormatter):
|
|
def start_section(self, heading):
|
|
res = "\n\n"
|
|
res += "#" * (len(heading) + 3)
|
|
res += f"\n# {heading}"
|
|
super().start_section(res)
|
|
|
|
def _format_usage(self, usage, actions, groups, prefix):
|
|
return ""
|
|
|
|
def _format_text(self, text):
|
|
return """
|
|
##########################################################
|
|
# Sample .aider.conf.yaml
|
|
# This file lists *all* the valid configuration entries.
|
|
# Place in your home dir, or at the root of your git repo.
|
|
##########################################################
|
|
|
|
"""
|
|
|
|
def _format_action(self, action):
|
|
if not action.option_strings:
|
|
return ""
|
|
|
|
parts = [""]
|
|
|
|
metavar = action.metavar
|
|
if not metavar and isinstance(action, argparse._StoreAction):
|
|
metavar = "VALUE"
|
|
|
|
default = action.default
|
|
if default == argparse.SUPPRESS:
|
|
default = ""
|
|
elif isinstance(default, str):
|
|
pass
|
|
elif isinstance(default, list) and not default:
|
|
default = ""
|
|
elif action.default is not None:
|
|
default = "true" if default else "false"
|
|
else:
|
|
default = ""
|
|
|
|
if action.help:
|
|
parts.append(f"## {action.help}")
|
|
|
|
for switch in action.option_strings:
|
|
if switch.startswith("--"):
|
|
break
|
|
switch = switch.lstrip("-")
|
|
|
|
if isinstance(action, argparse._StoreTrueAction):
|
|
default = False
|
|
elif isinstance(action, argparse._StoreConstAction):
|
|
default = False
|
|
|
|
if default is False:
|
|
default = "false"
|
|
if default is True:
|
|
default = "true"
|
|
|
|
if default:
|
|
parts.append(f"#{switch}: {default}\n")
|
|
else:
|
|
parts.append(f"#{switch}:\n")
|
|
|
|
###
|
|
# parts.append(str(action))
|
|
|
|
return "\n".join(parts) + "\n"
|
|
|
|
def _format_action_invocation(self, action):
|
|
return ""
|
|
|
|
def _format_args(self, action, default_metavar):
|
|
return ""
|
|
|
|
|
|
class MarkdownHelpFormatter(argparse.HelpFormatter):
|
|
def start_section(self, heading):
|
|
super().start_section(f"## {heading}")
|
|
|
|
def _format_usage(self, usage, actions, groups, prefix):
|
|
res = super()._format_usage(usage, actions, groups, prefix)
|
|
quote = "```\n"
|
|
return quote + res + quote
|
|
|
|
def _format_text(self, text):
|
|
return ""
|
|
|
|
def _format_action(self, action):
|
|
if not action.option_strings:
|
|
return ""
|
|
|
|
parts = [""]
|
|
|
|
metavar = action.metavar
|
|
if not metavar and isinstance(action, argparse._StoreAction):
|
|
metavar = "VALUE"
|
|
|
|
for switch in action.option_strings:
|
|
if switch.startswith("--"):
|
|
break
|
|
|
|
if metavar:
|
|
parts.append(f"### `{switch} {metavar}`")
|
|
else:
|
|
parts.append(f"### `{switch}`")
|
|
if action.help:
|
|
parts.append(action.help + " ")
|
|
|
|
if action.default not in (argparse.SUPPRESS, None):
|
|
parts.append(f"Default: {action.default} ")
|
|
|
|
if action.env_var:
|
|
parts.append(f"Environment variable: `{action.env_var}` ")
|
|
|
|
if len(action.option_strings) > 1:
|
|
parts.append("Aliases:")
|
|
for switch in action.option_strings:
|
|
if metavar:
|
|
parts.append(f" - `{switch} {metavar}`")
|
|
else:
|
|
parts.append(f" - `{switch}`")
|
|
|
|
return "\n".join(parts) + "\n"
|
|
|
|
def _format_action_invocation(self, action):
|
|
return ""
|
|
|
|
def _format_args(self, action, default_metavar):
|
|
return ""
|