mirror of
https://github.com/tuxdotrs/nix-config.git
synced 2026-09-19 16:49:04 +05:30
fix(lazygit): fix model version and json output parsing
This commit is contained in:
@@ -87,81 +87,68 @@
|
||||
title = "AI Generated Commit Messages";
|
||||
key = "CommitMsg";
|
||||
command = ''
|
||||
bash -c "
|
||||
# Check for staged changes
|
||||
diff=\$(git diff --cached | head -n 10)
|
||||
if [ -z \"\$diff\" ]; then
|
||||
echo \"No changes in staging. Add changes first.\"
|
||||
bash -lc '
|
||||
diff=$(git diff --cached)
|
||||
if [ -z "$diff" ]; then
|
||||
echo "No changes in staging. Add changes first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
SELECTED_TYPE=\"{{.Form.Type}}\"
|
||||
COMMITS_TO_SUGGEST=8
|
||||
SELECTED_TYPE="{{.Form.Type}}"
|
||||
COMMITS_TO_SUGGEST=4
|
||||
|
||||
opencode run -m \"google/gemini-2.5-flash-lite\" \"
|
||||
You are an expert at writing Git commits. Your job is to write commit messages that follow the Conventional Commits format.
|
||||
opencode run --format json --model=google/gemini-3.5-flash-lite --variant=none "
|
||||
You are an expert at writing Git commits. Your job is to write commit messages that follow the Conventional Commits format.
|
||||
|
||||
The user has selected: \$SELECTED_TYPE
|
||||
The user has selected: $SELECTED_TYPE
|
||||
|
||||
Your task is to:
|
||||
1. Analyze the code changes
|
||||
2. Determine the most appropriate commit type (if user selected 'ai-defined')
|
||||
3. Determine an appropriate scope (component/area affected)
|
||||
4. Decide if this is a breaking change
|
||||
5. Write clear, concise commit messages
|
||||
Your task is to:
|
||||
1. Analyze the code changes
|
||||
2. Determine the most appropriate commit type if user selected ai-defined
|
||||
3. Determine an appropriate scope, component, or area affected
|
||||
4. Decide if this is a breaking change
|
||||
5. Write clear, concise commit messages
|
||||
|
||||
Available commit types:
|
||||
- feat: A new feature
|
||||
- fix: A bug fix
|
||||
- docs: Documentation only changes
|
||||
- style: Changes that do not affect the meaning of the code
|
||||
- refactor: A code change that neither fixes a bug nor adds a feature
|
||||
- perf: A code change that improves performance
|
||||
- test: Adding missing tests or correcting existing tests
|
||||
- build: Changes that affect the build system or external dependencies
|
||||
- ci: Changes to CI configuration files and scripts
|
||||
- chore: Other changes that don't modify src or test files
|
||||
- revert: Reverts a previous commit
|
||||
Available commit types:
|
||||
- feat: A new feature
|
||||
- fix: A bug fix
|
||||
- docs: Documentation only changes
|
||||
- style: Changes that do not affect the meaning of the code
|
||||
- refactor: A code change that neither fixes a bug nor adds a feature
|
||||
- perf: A code change that improves performance
|
||||
- test: Adding missing tests or correcting existing tests
|
||||
- build: Changes that affect the build system or external dependencies
|
||||
- ci: Changes to CI configuration files and scripts
|
||||
- chore: Other changes that do not modify src or test files
|
||||
- revert: Reverts a previous commit
|
||||
|
||||
Follow these guidelines:
|
||||
- Structure: <type>(<scope>): <description>
|
||||
- If user selected 'ai-defined', analyze the changes and pick the most suitable type
|
||||
- If user selected a specific type, use that type: \$SELECTED_TYPE
|
||||
- Add scope in parentheses if applicable (e.g., auth, api, ui, config)
|
||||
- Use exclamation mark (!) after type/scope for breaking changes: type(scope)!: description
|
||||
- Use lowercase for description (except proper nouns)
|
||||
- Use imperative mood (\\\"add\\\", not \\\"added\\\")
|
||||
- Keep description under 50 characters when possible
|
||||
- No period at the end of subject line
|
||||
Follow these guidelines:
|
||||
- Structure: <type>(<scope>): <description>
|
||||
- If user selected ai-defined, analyze the changes and pick the most suitable type
|
||||
- If user selected a specific type, use that type: $SELECTED_TYPE
|
||||
- Add scope in parentheses if applicable, for example auth, api, ui, config
|
||||
- Use exclamation mark after type or scope for breaking changes: type(scope)!: description
|
||||
- Use lowercase for description except proper nouns
|
||||
- Use imperative mood: add, not added
|
||||
- Keep description under 50 characters when possible
|
||||
- No period at the end of subject line
|
||||
|
||||
Examples:
|
||||
- feat(auth): add OAuth login support
|
||||
- fix(api): handle null response in user endpoint
|
||||
- docs(readme): update installation instructions
|
||||
- style(ui): improve button spacing consistency
|
||||
- refactor(database): simplify query builder logic
|
||||
- test(auth): add unit tests for login flow
|
||||
- build(deps): upgrade React to version 18
|
||||
- ci(github): fix deployment workflow
|
||||
- chore(config): update ESLint rules
|
||||
- perf(api)!: optimize database queries
|
||||
IMPORTANT:
|
||||
- Generate exactly $COMMITS_TO_SUGGEST different commit message options
|
||||
- If user selected ai-defined, you can use different types for different options
|
||||
- If user selected a specific type, all messages must use that type
|
||||
- Only return commit messages, no explanations
|
||||
- Do not use markdown code blocks
|
||||
- One message per line
|
||||
|
||||
IMPORTANT:
|
||||
- Generate exactly \$COMMITS_TO_SUGGEST different commit message options
|
||||
- If user selected 'ai-defined', you can use different types for different options
|
||||
- If user selected a specific type, all messages must use that type
|
||||
- Only return commit messages, no explanations
|
||||
- Do not use markdown code blocks
|
||||
- One message per line
|
||||
Previous commits for context:
|
||||
$(git log --oneline -10)
|
||||
|
||||
Previous commits for context:
|
||||
\$(git log --oneline -10)
|
||||
|
||||
Changes to analyze:
|
||||
\$(git diff --cached --stat)
|
||||
\$(git diff --cached)
|
||||
\"
|
||||
"
|
||||
Changes to analyze:
|
||||
$(git diff --cached --stat)
|
||||
$diff
|
||||
" | JQ_TEXT=text jq -r "select(.type == env.JQ_TEXT) | .part.text? // empty"
|
||||
'
|
||||
'';
|
||||
}
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user