mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-16 06:18:42 +02:00
Merge pull request #2169 from maxtimum/feature/add_grep_option_to_ps
Feature/add grep option to ps
This commit is contained in:
@@ -432,7 +432,10 @@ empty file will be created.
|
||||
ps
|
||||
^^
|
||||
|
||||
$ ps [-g, --grep pattern]
|
||||
|
||||
Prints all scripts that are currently running on the current server.
|
||||
The :code:`-g, --grep pattern` option will only output running scripts where the name matches the provided pattern.
|
||||
|
||||
rm
|
||||
^^
|
||||
|
||||
@@ -2,6 +2,7 @@ import { ITerminal } from "../ITerminal";
|
||||
import { IRouter } from "../../ui/Router";
|
||||
import { IPlayer } from "../../PersonObjects/IPlayer";
|
||||
import { BaseServer } from "../../Server/BaseServer";
|
||||
import * as libarg from "arg"
|
||||
|
||||
export function ps(
|
||||
terminal: ITerminal,
|
||||
@@ -10,16 +11,40 @@ export function ps(
|
||||
server: BaseServer,
|
||||
args: (string | number | boolean)[],
|
||||
): void {
|
||||
if (args.length !== 0) {
|
||||
terminal.error("Incorrect usage of ps command. Usage: ps");
|
||||
let flags;
|
||||
try{
|
||||
flags = libarg({
|
||||
'--grep': String,
|
||||
'-g': '--grep'
|
||||
},
|
||||
{ argv: args }
|
||||
)
|
||||
}catch(e){
|
||||
// catch passing only -g / --grep with no string to use as the search
|
||||
terminal.error("Incorrect usage of ps command. Usage: ps [-g, --grep pattern]");
|
||||
return;
|
||||
}
|
||||
for (let i = 0; i < server.runningScripts.length; i++) {
|
||||
const rsObj = server.runningScripts[i];
|
||||
let res = `(PID - ${rsObj.pid}) ${rsObj.filename}`;
|
||||
for (let j = 0; j < rsObj.args.length; ++j) {
|
||||
res += " " + rsObj.args[j].toString();
|
||||
const pattern = flags['--grep']
|
||||
if (pattern) {
|
||||
const re = new RegExp(pattern.toString())
|
||||
const matching = server.runningScripts.filter((x) => re.test(x.filename))
|
||||
for (let i = 0; i < matching.length; i++) {
|
||||
const rsObj = matching[i];
|
||||
let res = `(PID - ${rsObj.pid}) ${rsObj.filename}`;
|
||||
for (let j = 0; j < rsObj.args.length; ++j) {
|
||||
res += " " + rsObj.args[j].toString();
|
||||
}
|
||||
terminal.print(res);
|
||||
}
|
||||
}
|
||||
if(args.length === 0){
|
||||
for (let i = 0; i < server.runningScripts.length; i++) {
|
||||
const rsObj = server.runningScripts[i];
|
||||
let res = `(PID - ${rsObj.pid}) ${rsObj.filename}`;
|
||||
for (let j = 0; j < rsObj.args.length; ++j) {
|
||||
res += " " + rsObj.args[j].toString();
|
||||
}
|
||||
terminal.print(res);
|
||||
}
|
||||
terminal.print(res);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user