use-multiple-gits
Version:
CLI tool to manage multiple git configurations (user.name, user.email, SSH keys) with easy switching between identities
78 lines • 3.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const commander_1 = require("commander");
const fs_1 = require("fs");
const path_1 = require("path");
const add_1 = require("../commands/add");
const autoSwitch_1 = require("../commands/autoSwitch");
const export_1 = require("../commands/export");
const group_1 = require("../commands/group");
const hook_1 = require("../commands/hook");
const import_1 = require("../commands/import");
const init_1 = require("../commands/init");
const list_1 = require("../commands/list");
const remove_1 = require("../commands/remove");
const setLocal_1 = require("../commands/setLocal");
const setup_1 = require("../commands/setup");
const packageJson = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(__dirname, '../../package.json'), 'utf-8'));
const program = new commander_1.Command();
program
.name('multiGit')
.description('CLI tool to manage multiple git configurations')
.version(packageJson.version);
program
.command('setup')
.description('Complete setup: install, initialize, and optionally add first config')
.option('--auto-add <name>', 'Automatically add a configuration after setup')
.option('--generate-ssh-key', 'Generate SSH key when adding config')
.action((options) => {
(0, setup_1.setupCommand)({
autoAdd: !!options.autoAdd,
configName: options.autoAdd,
generateSshKey: options.generateSshKey,
});
});
program
.command('init')
.description('Initialize multi-git configuration system')
.action(init_1.initCommand);
program
.command('add <name>')
.description('Add a new git configuration')
.option('--generate-ssh-key', 'Automatically generate SSH key if missing')
.action((name, options) => {
(0, add_1.addCommand)(name, { generateSshKey: options.generateSshKey });
});
program.command('list').description('List all configured git identities').action(list_1.listCommand);
program.command('remove <name>').description('Remove a git configuration').action(remove_1.removeCommand);
program
.command('export [file]')
.description('Export configurations to file (or stdout if no file specified)')
.action(export_1.exportCommand);
program
.command('import <file>')
.description('Import configurations from file')
.action(import_1.importCommand);
program
.command('set-local <name>')
.description('Set git config for current repository only (not global)')
.action(setLocal_1.setLocalCommand);
program
.command('hook <action>')
.description('Manage git hooks (install/uninstall pre-commit hook)')
.action(hook_1.hookCommand);
program
.command('auto-switch <action>')
.description('Manage auto-switch feature (enable/disable/add/remove)')
.argument('[path]', 'Directory path for mapping')
.argument('[config]', 'Config name for mapping')
.action((action, path, config) => (0, autoSwitch_1.autoSwitchCommand)(action, path, config));
program
.command('group <action>')
.description('Manage configuration groups (create/add/remove/delete/list)')
.argument('[groupName]', 'Group name')
.argument('[configName]', 'Config name')
.action((action, groupName, configName) => (0, group_1.groupCommand)(action, groupName, configName));
program.parse();
//# sourceMappingURL=multiGit.js.map