Outlook_Addin_LLM/node_modules/find-process/bin/find-process.js

77 lines
1.9 KiB
JavaScript
Executable File

#!/usr/bin/env node
'use strict'
const program = require('commander')
const chalk = require('chalk')
const debug = require('debug')('find-process')
const find = require('..')
const pkg = require('../package.json')
let type, keyword
program
.version(pkg.version)
.option('-t, --type <type>', 'find process by keyword type (pid|port|name)')
.option('-p, --port', 'find process by port')
.arguments('<keyword>')
.action(function (kw) {
keyword = kw
})
.on('--help', () => {
console.log()
console.log(' Examples:')
console.log()
console.log(' $ find-process node # find by name "node"')
console.log(' $ find-process 111 # find by pid "111"')
console.log(' $ find-process -p 80 # find by port "80"')
console.log(' $ find-process -t port 80 # find by port "80"')
console.log()
})
.parse(process.argv)
const opts = program.opts()
// check keyword
if (!keyword) {
console.error(chalk.red('Error: search keyword cannot be empty!'))
program.outputHelp()
process.exit(1)
}
// check type
if (opts.port) {
type = 'port'
} else if (!opts.type) {
// pid or port
if (/^\d+$/.test(keyword)) {
type = 'pid'
keyword = Number(keyword)
} else {
type = 'name'
}
} else {
type = opts.type
}
debug('find process by: type = %s, keyword = "%s"', type, keyword)
find(type, keyword)
.then(list => {
if (list.length) {
console.log('Found %s process' + (list.length === 1 ? '' : 'es') + '\n', list.length)
for (const item of list) {
console.log(chalk.cyan('[%s]'), item.name || 'unknown')
console.log('pid: %s', chalk.white(item.pid))
console.log('cmd: %s', chalk.white(item.cmd))
console.log()
}
} else {
console.log('No process found')
}
}, err => {
console.error(chalk.red(err.stack || err))
process.exit(1)
})