merge-drivers
Version:
Merge Drivers CLI: A command-line interface to conveniently manage custom git merge drivers
52 lines (43 loc) • 1.39 kB
JavaScript
import { Command } from 'commander';
import fs from 'node:fs';
import path from 'node:path';
import { install } from './commands/install.js';
import { uninstall } from './commands/uninstall.js';
import { clean } from './commands/clean.js';
import { readConfig } from './utils/config.js';
const packageJsonPath = path.join(
path.dirname(new URL(import.meta.url).pathname),
'package.json',
);
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
const config = readConfig('.merge-drivers.yml');
const program = new Command();
program
.description(packageJson.description)
.version(packageJson.version, '-v, --version', 'Output the current version');
program
.command('install')
.description('Installs merge drivers')
.argument('[merge drivers...]')
.option('-nc, --no-clean', 'Skip cleaning merge drivers before installing')
.action(async (mergeDrivers, options) => {
if (options.clean) {
await clean(config);
}
await install(config, mergeDrivers);
});
program
.command('uninstall')
.description('Uninstalls merge drivers')
.argument('[merge drivers...]')
.action((mergeDrivers) => {
uninstall(config, mergeDrivers);
});
program
.command('clean')
.description('Cleans merge drivers by uninstalling disabled ones')
.action(() => {
clean(config);
});
program.parse(process.argv);