mirror of
https://github.com/qodo-ai/pr-agent.git
synced 2025-07-02 03:40:38 +08:00
Added PRHelpMessage to command execution in pr_agent.py
This commit is contained in:
@ -13,6 +13,7 @@ from pr_agent.tools.pr_code_suggestions import PRCodeSuggestions
|
|||||||
from pr_agent.tools.pr_config import PRConfig
|
from pr_agent.tools.pr_config import PRConfig
|
||||||
from pr_agent.tools.pr_description import PRDescription
|
from pr_agent.tools.pr_description import PRDescription
|
||||||
from pr_agent.tools.pr_generate_labels import PRGenerateLabels
|
from pr_agent.tools.pr_generate_labels import PRGenerateLabels
|
||||||
|
from pr_agent.tools.pr_help_message import PRHelpMessage
|
||||||
from pr_agent.tools.pr_information_from_user import PRInformationFromUser
|
from pr_agent.tools.pr_information_from_user import PRInformationFromUser
|
||||||
from pr_agent.tools.pr_line_questions import PR_LineQuestions
|
from pr_agent.tools.pr_line_questions import PR_LineQuestions
|
||||||
from pr_agent.tools.pr_questions import PRQuestions
|
from pr_agent.tools.pr_questions import PRQuestions
|
||||||
@ -37,6 +38,7 @@ command2class = {
|
|||||||
"update_changelog": PRUpdateChangelog,
|
"update_changelog": PRUpdateChangelog,
|
||||||
"config": PRConfig,
|
"config": PRConfig,
|
||||||
"settings": PRConfig,
|
"settings": PRConfig,
|
||||||
|
"help": PRHelpMessage,
|
||||||
"similar_issue": PRSimilarIssue,
|
"similar_issue": PRSimilarIssue,
|
||||||
"add_docs": PRAddDocs,
|
"add_docs": PRAddDocs,
|
||||||
"generate_labels": PRGenerateLabels,
|
"generate_labels": PRGenerateLabels,
|
||||||
|
62
pr_agent/tools/pr_help_message.py
Normal file
62
pr_agent/tools/pr_help_message.py
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
from pr_agent.config_loader import get_settings
|
||||||
|
from pr_agent.git_providers import get_git_provider
|
||||||
|
from pr_agent.log import get_logger
|
||||||
|
|
||||||
|
|
||||||
|
class PRHelpMessage:
|
||||||
|
"""
|
||||||
|
The PRConfig class is responsible for listing all configuration options available for the user.
|
||||||
|
"""
|
||||||
|
def __init__(self, pr_url: str, args=None, ai_handler=None):
|
||||||
|
"""
|
||||||
|
Initialize the PRConfig object with the necessary attributes and objects to comment on a pull request.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
pr_url (str): The URL of the pull request to be reviewed.
|
||||||
|
args (list, optional): List of arguments passed to the PRReviewer class. Defaults to None.
|
||||||
|
"""
|
||||||
|
self.git_provider = get_git_provider()(pr_url)
|
||||||
|
|
||||||
|
async def run(self):
|
||||||
|
get_logger().info('Getting PR Help Message...')
|
||||||
|
pr_comment="## PR Agent Intro\n\n"
|
||||||
|
pr_comment +="🤖 Welcome to the PR Agent, an AI-powered tool for automated pull request analysis, feedback, suggestions and more."""
|
||||||
|
pr_comment +="\n\nHere are the tools you can use to interact with the PR Agent:\n"
|
||||||
|
base_path ="https://github.com/Codium-ai/pr-agent/tree/main/docs"
|
||||||
|
pr_comment +=f"""
|
||||||
|
\n\n
|
||||||
|
- [DESCRIBE]({base_path}/DESCRIBE.md)
|
||||||
|
- [REVIEW]({base_path}/REVIEW.md)
|
||||||
|
- [IMPROVE](./IMPROVE.md)
|
||||||
|
- [ASK]({base_path}/ASK.md)
|
||||||
|
- [SIMILAR_ISSUE]({base_path}/SIMILAR_ISSUE.md)
|
||||||
|
- [UPDATE CHANGELOG]({base_path}/UPDATE_CHANGELOG.md)
|
||||||
|
- [ADD DOCUMENTATION]({base_path}/ADD_DOCUMENTATION.md)
|
||||||
|
- [GENERATE CUSTOM LABELS]({base_path}/GENERATE_CUSTOM_LABELS.md)
|
||||||
|
- [Analyze]({base_path}/Analyze.md)
|
||||||
|
- [Test]({base_path}/TEST.md)
|
||||||
|
- [CI Feedback]({base_path}/CI_FEEDBACK.md)
|
||||||
|
"""
|
||||||
|
pr_comment +=f"""\n\nNote that each command be [applied automatically](https://github.com/Codium-ai/pr-agent/blob/main/Usage.md#github-app-automatic-tools-for-pr-actions) when a new PR is opened, or invoked manually by [commenting on a PR](https://github.com/Codium-ai/pr-agent/blob/main/Usage.md#online-usage)."""
|
||||||
|
if get_settings().config.publish_output:
|
||||||
|
self.git_provider.publish_comment(pr_comment)
|
||||||
|
return ""
|
||||||
|
|
||||||
|
def _prepare_pr_configs(self) -> str:
|
||||||
|
import tomli
|
||||||
|
with open(get_settings().find_file("configuration.toml"), "rb") as conf_file:
|
||||||
|
configuration_headers = [header.lower() for header in tomli.load(conf_file).keys()]
|
||||||
|
relevant_configs = {
|
||||||
|
header: configs for header, configs in get_settings().to_dict().items()
|
||||||
|
if header.lower().startswith("pr_") and header.lower() in configuration_headers
|
||||||
|
}
|
||||||
|
comment_str = "Possible Configurations:"
|
||||||
|
for header, configs in relevant_configs.items():
|
||||||
|
if configs:
|
||||||
|
comment_str += "\n"
|
||||||
|
for key, value in configs.items():
|
||||||
|
comment_str += f"\n{header.lower()}.{key.lower()} = {repr(value) if isinstance(value, str) else value}"
|
||||||
|
comment_str += " "
|
||||||
|
if get_settings().config.verbosity_level >= 2:
|
||||||
|
get_logger().info(f"comment_str:\n{comment_str}")
|
||||||
|
return comment_str
|
Reference in New Issue
Block a user