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