codekingpro/portable-devtools
115k
1#!/usr/bin/env node
2
3const which = require('../lib')
4const argv = process.argv.slice(2)
5
6const usage = (err) => {
7 if (err) {
8 console.error(`which: ${err}`)
9 }
10 console.error('usage: which [-as] program ...')
11 process.exit(1)
12}
13
14if (!argv.length) {
15 return usage()
16}
17
18let dashdash = false
19const [commands, flags] = argv.reduce((acc, arg) => {
20 if (dashdash || arg === '--') {
21 dashdash = true
22 return acc
23 }
24
25 if (!/^-/.test(arg)) {
26 acc[0].push(arg)
27 return acc
28 }
29
30 for (const flag of arg.slice(1).split('')) {
31 if (flag === 's') {
32 acc[1].silent = true
33 } else if (flag === 'a') {
34 acc[1].all = true
35 } else {
36 usage(`illegal option -- ${flag}`)
37 }
38 }
39
40 return acc
41}, [[], {}])
42
43for (const command of commands) {
44 try {
45 const res = which.sync(command, { all: flags.all })
46 if (!flags.silent) {
47 console.log([].concat(res).join('\n'))
48 }
49 } catch (err) {
50 process.exitCode = 1
51 }
52}
53 