UNPKG

cross-tools

Version:

Cross-platform fundamental tools for developers

1 lines 1.37 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const tslib_1=require("tslib"),command_1=require("@oclif/command"),prompts_1=tslib_1.__importDefault(require("prompts")),pidusage_1=tslib_1.__importDefault(require("pidusage")),cli_table_1=tslib_1.__importDefault(require("cli-table")),shellExecAsync_1=tslib_1.__importDefault(require("../util/shellExecAsync")),listProcesses=e=>prompts_1.default({type:"autocompleteMultiselect",name:"pids",message:"Pick a process",choices:e.map(e=>({title:`${e.name} (${e.addr})`,value:e.pid})),min:1},{onCancel:()=>process.exit()});class Check extends command_1.Command{async run(){const e=await this.getListeningPortsData(),{pids:t}=await(s=e,prompts_1.default({type:"autocompleteMultiselect",name:"pids",message:"Pick a process",choices:s.map(e=>({title:`${e.name} (${e.addr})`,value:e.pid})),min:1},{onCancel:()=>process.exit()}));var s;const a=await pidusage_1.default(t),i=new cli_table_1.default({head:Object.keys(Object.values(a)[0])});for(const e in a)i.push(Object.values(a[e]));console.log(i.toString())}async getListeningPortsData(){let e=await shellExecAsync_1.default("lsof -nP +c 15 | grep LISTEN | awk '{print($1,$2,$9)}'",{silent:!0});return e=e.split("\n").map(e=>e),e=e.filter(e=>3===e.split(" ").length),e=e.map(e=>e.split(" ")),e=e.map(e=>({name:e[0],pid:e[1],addr:e[2]})),e}}exports.default=Check;