You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.7 KiB
72 lines
1.7 KiB
#!/usr/bin/env node |
|
'use strict'; |
|
|
|
var argv = require('minimist')(process.argv.slice(2), { |
|
alias: { |
|
c: 'count', |
|
n: 'narrow', |
|
h: 'help', |
|
v: 'version' |
|
}, |
|
string: ['_'], |
|
boolean: ['narrow', 'help', 'version'] |
|
}); |
|
|
|
function help() { |
|
var sumUp = require('sum-up'); |
|
var yellow = require('chalk').yellow; |
|
|
|
var pkg = require('./package.json'); |
|
|
|
console.log([ |
|
sumUp(pkg), |
|
'', |
|
'Usage 1: $ strip-dirs <string> --count(or -c) <number> [--narrow(or -n)]', |
|
'Usage 2: $ echo <string> | strip-dirs --count(or -c) <number> [--narrow(or -n)]', |
|
'', |
|
'Flags:', |
|
yellow('--count, -c') + ' Number of directories to strip from the path', |
|
yellow('--narrow, -n') + ' Disallow surplus count of directory level', |
|
yellow('--version, -v') + ' Print version', |
|
yellow('--help, -h') + ' Print usage information' |
|
].join('\n')); |
|
} |
|
|
|
function printErr(msg) { |
|
process.stderr.write(msg + '\n', function() { |
|
process.exit(1); |
|
}); |
|
} |
|
|
|
function run(path) { |
|
if (path) { |
|
if (argv.count !== undefined) { |
|
if (typeof argv.count !== 'number') { |
|
printErr('--count (or -c) option must be a number.'); |
|
} else { |
|
var stripDirs = require('./'); |
|
try { |
|
console.log(stripDirs(path.trim(), argv.count, {narrow: argv.narrow})); |
|
} catch (e) { |
|
printErr(e.message); |
|
} |
|
} |
|
} else { |
|
printErr('--count (or -c) option required.'); |
|
} |
|
} else if (!process.stdin.isTTY) { |
|
console.log('.'); |
|
} else { |
|
help(); |
|
} |
|
} |
|
|
|
if (argv.version) { |
|
console.log(require('./package.json').version); |
|
} else if (argv.help) { |
|
help(); |
|
} else if (process.stdin.isTTY) { |
|
run(argv._[0]); |
|
} else { |
|
require('get-stdin')(run); |
|
}
|
|
|