claude-gemini
Version:
Global CLI tool for Claude-Gemini integration across projects
95 lines • 3.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const commander_1 = require("commander");
const commands_1 = require("./commands");
const fs_1 = require("fs");
const path_1 = require("path");
const packageJson = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(__dirname, '../package.json'), 'utf-8'));
const version = packageJson.version;
const program = new commander_1.Command();
program
.name('claude-gemini')
.description('Global CLI for Claude-Gemini integration')
.version(version)
.alias('cg');
// Sync command - the main functionality
program
.command('sync')
.alias('s')
.description('Run Gemini analysis synchronously')
.argument('<query>', 'Query with @paths and prompt')
.option('-r, --ripgrep', 'Use ripgrep for pre-filtering')
.option('-t, --timeout <seconds>', 'Timeout in seconds', '300')
.option('-m, --model <model>', 'Gemini model to use (empty = auto-select)')
.option('--no-format', 'Return raw output without formatting')
.option('--no-code2prompt', 'Disable code2prompt and use legacy path processing')
.option('--include <patterns>', 'Include file patterns (comma-separated)', (value) => value.split(','))
.option('--exclude <patterns>', 'Exclude file patterns (comma-separated)', (value) => value.split(','))
.option('--line-numbers', 'Add line numbers to code blocks')
.option('--template <file>', 'Use custom code2prompt template')
.action((query, options) => {
(0, commands_1.sync)(query, {
ripgrep: options.ripgrep,
timeout: options.timeout,
model: options.model,
format: options.format,
useCode2prompt: options.code2prompt !== false, // code2prompt is default, disabled only with --no-code2prompt
includePatterns: options.include || [],
excludePatterns: options.exclude || [],
lineNumbers: options.lineNumbers,
template: options.template
});
});
// Watch command
program
.command('watch')
.alias('w')
.description('Watch for file changes and auto-analyze')
.option('-p, --pattern <pattern>', 'File patterns to watch', '*.ts,*.tsx,*.js,*.jsx')
.option('-d, --debounce <ms>', 'Debounce time in milliseconds', '2000')
.action(commands_1.watch);
// Init command - setup in current project
program
.command('init')
.description('Initialize Claude-Gemini in current project')
.option('--global', 'Set up global configuration')
.option('--inject', 'Inject instructions into existing CLAUDE.md')
.action(commands_1.init);
// Config command
program
.command('config')
.description('Manage Claude-Gemini configuration')
.option('-l, --list', 'List current configuration')
.option('-s, --set <key=value>', 'Set configuration value')
.option('-g, --global', 'Use global configuration')
.action(commands_1.config);
// Inject command - auto-inject into CLAUDE.md
program
.command('inject')
.description('Inject Claude-Gemini instructions into CLAUDE.md')
.option('-f, --file <path>', 'Path to CLAUDE.md', './CLAUDE.md')
.option('--force', 'Overwrite existing instructions')
.action(commands_1.inject);
// Global command handler for direct execution
program
.argument('[query]', 'Direct query (shorthand for sync)')
.action((query) => {
if (query) {
(0, commands_1.sync)(query, {
ripgrep: false,
timeout: '300',
model: '',
format: true,
useCode2prompt: true, // Default to true for global command
includePatterns: [],
excludePatterns: [],
lineNumbers: false
});
}
else {
program.help();
}
});
program.parse();
//# sourceMappingURL=cli.js.map