Enhance git-commit utility with --accept, --push, and --no-push flags
- Add new CLI options for auto‑accept, auto‑push, and skip‑push behavior. - Update usage examples and help text in `git-commit.js`. - Revise `CLAUDE.md` to reflect the new commit workflow and options. - Adjust script logic to handle flags without user prompts.
This commit is contained in:
parent
d336705c5c
commit
7aa073f241
@ -14,7 +14,12 @@ pnpm deploy # Build and deploy to Cloudflare Pages
|
|||||||
|
|
||||||
### Utilities
|
### Utilities
|
||||||
```bash
|
```bash
|
||||||
pnpm commit # Auto-generate commit message for staged files
|
# Git commit message automation
|
||||||
|
pnpm commit # Interactive: review, accept/edit, optionally push
|
||||||
|
pnpm commit --accept # Auto-accept message, prompt for push
|
||||||
|
pnpm commit --accept --no-push # Auto-accept and commit without pushing
|
||||||
|
pnpm commit --accept --push # Fully automated: accept and push
|
||||||
|
|
||||||
pnpm notepad # Quick note-taking utility
|
pnpm notepad # Quick note-taking utility
|
||||||
|
|
||||||
# Image conversion to AVIF format
|
# Image conversion to AVIF format
|
||||||
|
|||||||
@ -373,7 +373,7 @@ ${colors.bright}Usage:${colors.reset}
|
|||||||
${colors.cyan}git add <files>${colors.reset}
|
${colors.cyan}git add <files>${colors.reset}
|
||||||
|
|
||||||
2. Run this script:
|
2. Run this script:
|
||||||
${colors.cyan}pnpm commit${colors.reset}
|
${colors.cyan}pnpm commit [options]${colors.reset}
|
||||||
|
|
||||||
3. Review the AI-generated commit message
|
3. Review the AI-generated commit message
|
||||||
|
|
||||||
@ -388,7 +388,23 @@ ${colors.bright}Requirements:${colors.reset}
|
|||||||
- Get your key from: ${colors.dim}https://openrouter.ai/keys${colors.reset}
|
- Get your key from: ${colors.dim}https://openrouter.ai/keys${colors.reset}
|
||||||
|
|
||||||
${colors.bright}Options:${colors.reset}
|
${colors.bright}Options:${colors.reset}
|
||||||
--help, -h Show this help message
|
--help, -h Show this help message
|
||||||
|
--accept, -a Auto-accept the generated commit message without prompting
|
||||||
|
--push, -p Automatically push to remote after committing
|
||||||
|
--no-push, -n Skip the push prompt (commit only, don't push)
|
||||||
|
|
||||||
|
${colors.bright}Examples:${colors.reset}
|
||||||
|
${colors.cyan}pnpm commit${colors.reset}
|
||||||
|
Interactive mode - review, accept/edit, optionally push
|
||||||
|
|
||||||
|
${colors.cyan}pnpm commit --accept${colors.reset}
|
||||||
|
Auto-accept commit message, still prompt for push
|
||||||
|
|
||||||
|
${colors.cyan}pnpm commit --accept --no-push${colors.reset}
|
||||||
|
Auto-accept and commit without pushing
|
||||||
|
|
||||||
|
${colors.cyan}pnpm commit --accept --push${colors.reset}
|
||||||
|
Fully automated - accept and push without any prompts
|
||||||
`);
|
`);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -403,6 +419,11 @@ async function main() {
|
|||||||
process.exit(0);
|
process.exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check for flags
|
||||||
|
const autoAccept = args.includes('--accept') || args.includes('-a');
|
||||||
|
const autoPush = args.includes('--push') || args.includes('-p');
|
||||||
|
const noPush = args.includes('--no-push') || args.includes('-n');
|
||||||
|
|
||||||
// Load environment variables
|
// Load environment variables
|
||||||
loadEnv();
|
loadEnv();
|
||||||
|
|
||||||
@ -428,27 +449,49 @@ async function main() {
|
|||||||
// Generate commit message using OpenRouter
|
// Generate commit message using OpenRouter
|
||||||
const generatedMessage = await generateCommitMessage(context);
|
const generatedMessage = await generateCommitMessage(context);
|
||||||
|
|
||||||
// Get user approval
|
let approved = autoAccept;
|
||||||
const rl = createReadlineInterface();
|
let message = generatedMessage;
|
||||||
const { approved, message } = await getUserApproval(generatedMessage, rl);
|
|
||||||
|
|
||||||
if (!approved) {
|
// Get user approval if not auto-accepting
|
||||||
console.log(`\n${colors.yellow}⏭️ Commit cancelled${colors.reset}`);
|
if (!autoAccept) {
|
||||||
|
const rl = createReadlineInterface();
|
||||||
|
const result = await getUserApproval(generatedMessage, rl);
|
||||||
|
approved = result.approved;
|
||||||
|
message = result.message;
|
||||||
rl.close();
|
rl.close();
|
||||||
process.exit(0);
|
|
||||||
|
if (!approved) {
|
||||||
|
console.log(`\n${colors.yellow}⏭️ Commit cancelled${colors.reset}`);
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.log(`\n${colors.bright}${colors.green}📝 Generated commit message:${colors.reset}`);
|
||||||
|
console.log(`${colors.dim}${'─'.repeat(60)}${colors.reset}`);
|
||||||
|
console.log(message);
|
||||||
|
console.log(`${colors.dim}${'─'.repeat(60)}${colors.reset}\n`);
|
||||||
|
console.log(`${colors.cyan}Auto-accepting with --accept flag${colors.reset}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create the commit
|
// Create the commit
|
||||||
const commitSuccess = createCommit(message);
|
const commitSuccess = createCommit(message);
|
||||||
|
|
||||||
if (!commitSuccess) {
|
if (!commitSuccess) {
|
||||||
rl.close();
|
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ask to push
|
// Handle push logic
|
||||||
const shouldPush = await askToPush(rl);
|
let shouldPush = false;
|
||||||
rl.close();
|
|
||||||
|
if (noPush) {
|
||||||
|
console.log(`${colors.cyan}Skipping push with --no-push flag${colors.reset}`);
|
||||||
|
} else if (autoPush) {
|
||||||
|
console.log(`${colors.cyan}Auto-pushing with --push flag${colors.reset}`);
|
||||||
|
shouldPush = true;
|
||||||
|
} else {
|
||||||
|
const rl = createReadlineInterface();
|
||||||
|
shouldPush = await askToPush(rl);
|
||||||
|
rl.close();
|
||||||
|
}
|
||||||
|
|
||||||
if (shouldPush) {
|
if (shouldPush) {
|
||||||
pushToRemote();
|
pushToRemote();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user