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