-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathindex.js
executable file
·58 lines (52 loc) · 1.48 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
const FindStale = require('./lib/find-stale.js');
const utils = require('./lib/utils.js');
const fs = require('fs');
const path = require('path');
let version = '0.0.0';
try {
const packageContent = fs.readFileSync(path.join(__dirname, 'package.json'))
const info = JSON.parse(packageContent)
version = info.version
} catch (e) {
// do not care
}
const argv = require('minimist')(process.argv, {
string: 'remote',
boolean: ['prune', 'force', 'version'],
alias: {p: "prune", f: "force", r: "remote"},
'default': {
'remote': 'origin',
'force': false
}
});
const options = ['version', 'prune', 'p', 'force', 'f', 'remote', 'r', '_'];
const hasInvalidParams = Object.keys(argv).some(name => options.indexOf(name) == -1);
(async () => {
if (hasInvalidParams) {
console.info('Usage: git removed-branches [-p|--prune] [-f|--force] [-r|--remote <remote>] [--version]');
return
}
if (argv.version) {
console.log(version);
process.exit(0);
}
const obj = new FindStale({
remove: argv.prune,
force: argv.force,
remote: argv.remote
});
// check for git repository
try {
await utils.exec(['git', 'rev-parse', '--show-toplevel']);
await obj.run();
} catch (err) {
if (err.code === 128) {
process.stderr.write('ERROR: Not a git repository\r\n');
} else if (err.code === 1984) {
process.stderr.write(`ERROR: ${err.message} \r\n`);
} else {
process.stderr.write(err.stack + '\r\n');
}
process.exit(1);
}
})();