UNPKG

@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
#!/usr/bin/env node 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;