ln-cli
Version:
Create or delete symlinks using glob
73 lines (66 loc) • 1.69 kB
JavaScript
;
var meow = require('meow');
var makeSymlinks = require('make-symlinks');
var delSymlinks = require('del-symlinks');
var cli = meow([
'Usage',
' $ ln-cli <FILEs|glob> [options]',
'',
'Options',
' -D, --delete Delete symlinks',
' -f, --force Overwrite symlinks if it exists',
' -d, --dry-run List what would be created or deleted instead of creating or deleting',
' --path Destination symlinks FILEs [Type: `string`]',
' --version Display the version and exit',
' --help Display this message and exit',
'',
'Examples',
' $ ln-cli \'dotfiles/*\' \'!dotfiles/.git\' --path \'/home/<username>\'',
' $ ln-cli \'/home/<username>/.*\' --delete'
], {
string: [
'_',
'path'
],
boolean: [
'delete',
'force',
'dry-run'
],
alias: {
D: 'delete',
d: 'dry-run',
f: 'force'
}
});
if (cli.input.length === 0) {
console.error('See `--help`');
process.exit(1);
}
if (cli.flags.path && cli.flags.delete) {
console.error('Please specifiec `options`');
process.exit(1);
}
if (cli.flags.path) {
delete cli.flags.delete;
var dryRun = cli.flags.dryRun;
makeSymlinks(cli.input, cli.flags.path, cli.flags).then(function (symlinks) {
if (dryRun) {
symlinks.forEach(function (symlink) {
console.log(symlink.path, '→', symlink.target);
});
}
});
} else if (cli.flags.delete) {
delete cli.flags.path;
delete cli.flags.delete;
delSymlinks(cli.input, cli.flags).then(function (files) {
if (cli.flags.dryRun) {
console.log(files.join('\n'));
}
});
} else {
console.error('Please specifiec `options`');
process.exit(1);
}