bitburner-src/src/Terminal/commands/top.ts

55 lines
1.9 KiB
TypeScript
Raw Normal View History

2022-09-06 15:07:12 +02:00
import { Terminal } from "../../Terminal";
2021-09-16 01:50:44 +02:00
import { BaseServer } from "../../Server/BaseServer";
import { formatRam } from "../../ui/formatNumber";
2021-09-16 01:50:44 +02:00
2022-09-13 18:37:24 +02:00
export function top(args: (string | number | boolean)[], server: BaseServer): void {
2021-09-16 01:50:44 +02:00
if (args.length !== 0) {
2022-09-06 15:07:12 +02:00
Terminal.error("Incorrect usage of top command. Usage: top");
2021-09-16 01:50:44 +02:00
return;
}
// Headers
const scriptWidth = 40;
const pidWidth = 10;
const threadsWidth = 16;
const scriptTxt = "Script";
const pidTxt = "PID";
const threadsTxt = "Threads";
const ramTxt = "RAM Usage";
const spacesAfterScriptTxt = " ".repeat(scriptWidth - scriptTxt.length);
const spacesAfterPidTxt = " ".repeat(pidWidth - pidTxt.length);
const spacesAfterThreadsTxt = " ".repeat(threadsWidth - threadsTxt.length);
const headers = `${scriptTxt}${spacesAfterScriptTxt}${pidTxt}${spacesAfterPidTxt}${threadsTxt}${spacesAfterThreadsTxt}${ramTxt}`;
2022-09-06 15:07:12 +02:00
Terminal.print(headers);
2021-09-16 01:50:44 +02:00
const currRunningScripts = server.runningScriptMap;
2021-09-16 01:50:44 +02:00
// Iterate through scripts on current server
for (const byPid of currRunningScripts.values()) {
for (const script of byPid.values()) {
// Calculate name padding
const numSpacesScript = Math.max(0, scriptWidth - script.filename.length);
const spacesScript = " ".repeat(numSpacesScript);
// Calculate PID padding
const numSpacesPid = Math.max(0, pidWidth - (script.pid + "").length);
const spacesPid = " ".repeat(numSpacesPid);
// Calculate thread padding
const numSpacesThread = Math.max(0, threadsWidth - (script.threads + "").length);
const spacesThread = " ".repeat(numSpacesThread);
// Calculate and transform RAM usage
const ramUsage = formatRam(script.ramUsage * script.threads);
const entry = [script.filename, spacesScript, script.pid, spacesPid, script.threads, spacesThread, ramUsage].join(
"",
);
Terminal.print(entry);
}
2021-09-16 01:50:44 +02:00
}
}