@cirrusinvicta/ai-commit-toolkit
Version:
AI-powered conventional commit generation with centralized configuration, OpenAI integration, and automated deployment workflows
75 lines (62 loc) ⢠2.47 kB
JavaScript
const { program } = require('commander');
const chalk = require('chalk');
const { version } = require('./package.json');
const AICommitToolkitSetup = require('./lib/setup');
/**
* AI Commit Toolkit - Main CLI entry point
*/
program
.name('ai-commit-toolkit')
.description('AI-powered conventional commit generation toolkit')
.version(version);
program
.command('setup')
.description('Setup AI commit toolkit in current project')
.option('--type <type>', 'Project type (ansible, vue, react, generic)', 'generic')
.option('--no-hooks', 'Skip husky hooks setup')
.option('--no-semantic-release', 'Skip semantic-release setup')
.option('--silent', 'Run without interactive prompts')
.action(async (options) => {
console.log(chalk.blue('š¤ AI Commit Toolkit Setup'));
console.log(chalk.gray('=============================='));
const setup = new AICommitToolkitSetup(options);
const success = await setup.install(options);
if (success) {
console.log(chalk.green('\nā
Setup complete! Try: git add . && git commit'));
console.log(chalk.yellow('š” Don\'t forget to set OPENAI_API_KEY environment variable'));
} else {
process.exit(1);
}
});
program
.command('test')
.description('Test the AI commit setup')
.option('--create-test-file', 'Create test files for full integration test')
.action(async (options) => {
const { execSync } = require('child_process');
const fs = require('fs');
const path = require('path');
// Check if we're in a project with AI commit setup
const testScriptPath = path.join(process.cwd(), 'scripts', 'test-ai-setup.sh');
if (!fs.existsSync(testScriptPath)) {
console.log(chalk.red('ā AI commit setup not found in current directory'));
console.log(chalk.yellow('š” Run "ai-commit-toolkit setup" first'));
process.exit(1);
}
const testScript = options.createTestFile ?
`bash ${testScriptPath} --create-test-file` :
`bash ${testScriptPath}`;
try {
execSync(testScript, { stdio: 'inherit', cwd: process.cwd() });
} catch (error) {
console.error(chalk.red('ā Test failed:'), error.message || error);
console.error(chalk.gray('Exit code:'), error.status || 'unknown');
process.exit(1);
}
});
if (require.main === module) {
program.parse();
}
// Export for programmatic use
module.exports = AICommitToolkitSetup;