74 lines
2.4 KiB
Python
Executable File
74 lines
2.4 KiB
Python
Executable File
from interpreter import OpenInterpreter
|
|
import os
|
|
import sys
|
|
from dotenv import load_dotenv
|
|
|
|
load_dotenv()
|
|
|
|
|
|
def get_git_credentials():
|
|
if len(sys.argv) != 5: # Changed from 4 to 5 to match expected arguments
|
|
print(
|
|
"Usage: python gen_commit.py <GIT_USER> <GIT_PASS> <GIT_REPO> <PROJECT_PATH>"
|
|
)
|
|
sys.exit(1)
|
|
return sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4]
|
|
|
|
|
|
def gen_commit(project_path):
|
|
agent = OpenInterpreter()
|
|
# Set auto_run to True to always allow code execution
|
|
agent.auto_run = True
|
|
|
|
agent.system_message = """
|
|
Your name is Bifrost,
|
|
you are a helpful assistant that can help me generate a commit message base on umcommit code.
|
|
|
|
You should follow these rules:
|
|
1. The commit message should be in English.
|
|
2. The commit message should be concise and to the point.
|
|
3. The commit message should be formatted as follows:
|
|
- feat: add a new feature
|
|
- fix: fix a bug
|
|
- refactor: refactor the code
|
|
- chore: update the code
|
|
- perf: improve the performance
|
|
- test: add a test
|
|
- docs: update the docs
|
|
- update: update the code
|
|
- remove: remove the code
|
|
- style: style the code
|
|
- revert: revert the code
|
|
- merge: merge the code
|
|
- conflict: resolve the conflict
|
|
- other: other
|
|
4. Only return the commit message follow Git Commit Style Guide, no other text or explanation.
|
|
"""
|
|
response = agent.chat(
|
|
f"""
|
|
Generate a commit message for the uncommit code in project path {project_path}
|
|
You should change working directory to {project_path} and use git diff --name-status to get the changes
|
|
"""
|
|
)
|
|
|
|
# Extract just the content from the response
|
|
if isinstance(response, list) and len(response) > 0:
|
|
if isinstance(response[-1], dict) and "content" in response[-1]:
|
|
return response[-1]["content"]
|
|
|
|
return str(response)
|
|
|
|
|
|
def push_code():
|
|
git_user, git_pass, git_repo, project_path = get_git_credentials()
|
|
commit_msg = gen_commit(project_path)
|
|
print(commit_msg)
|
|
os.system(f"git pull https://{git_user}:{git_pass}@{git_repo} || true")
|
|
os.system("git add .")
|
|
os.system(f'git commit -m "{commit_msg}" || true')
|
|
os.system(f"git push https://{git_user}:{git_pass}@{git_repo} || true")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
push_code()
|