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

67 lines
2.2 KiB
TypeScript
Raw Normal View History

2021-09-16 01:50:44 +02:00
import { ITerminal } from "../ITerminal";
2021-09-17 08:58:02 +02:00
import { IRouter } from "../../ui/Router";
2021-09-16 01:50:44 +02:00
import { IPlayer } from "../../PersonObjects/IPlayer";
import { BaseServer } from "../../Server/BaseServer";
2022-04-13 17:10:56 +02:00
import { MessageFilenames, showMessage } from "../../Message/MessageHelpers";
2021-09-16 01:50:44 +02:00
import { showLiterature } from "../../Literature/LiteratureHelpers";
2021-12-20 11:11:28 +01:00
import { dialogBoxCreate } from "../../ui/React/DialogBox";
2022-04-13 17:10:56 +02:00
import { checkEnum } from "../../utils/helpers/checkEnum";
2021-09-16 01:50:44 +02:00
export function cat(
terminal: ITerminal,
2021-09-17 08:58:02 +02:00
router: IRouter,
2021-09-16 01:50:44 +02:00
player: IPlayer,
server: BaseServer,
2021-12-03 20:44:32 +01:00
args: (string | number | boolean)[],
2021-09-16 01:50:44 +02:00
): void {
if (args.length !== 1) {
terminal.error("Incorrect usage of cat command. Usage: cat [file]");
return;
}
const relative_filename = args[0] + "";
const filename = terminal.getFilepath(relative_filename);
2022-04-07 01:30:08 +02:00
if (
!filename.endsWith(".msg") &&
!filename.endsWith(".lit") &&
!filename.endsWith(".txt") &&
!filename.endsWith(".script") &&
2022-07-21 21:09:55 +02:00
!filename.endsWith(".js")
2022-04-07 01:30:08 +02:00
) {
2021-09-16 01:50:44 +02:00
terminal.error(
2022-07-21 21:09:55 +02:00
"Only .msg, .txt, .lit, .script and .js files are viewable with cat (filename must end with .msg, .txt, .lit, .script or .js)",
2021-09-16 01:50:44 +02:00
);
return;
}
if (filename.endsWith(".msg") || filename.endsWith(".lit")) {
for (let i = 0; i < server.messages.length; ++i) {
if (filename.endsWith(".lit") && server.messages[i] === filename) {
const file = server.messages[i];
2021-10-14 08:07:05 +02:00
if (file.endsWith(".msg")) throw new Error(".lit file should not be a .msg");
2021-09-16 01:50:44 +02:00
showLiterature(file);
return;
} else if (filename.endsWith(".msg")) {
2021-10-14 08:07:05 +02:00
const file = server.messages[i];
if (file !== filename) continue;
2022-04-13 17:10:56 +02:00
if (!checkEnum(MessageFilenames, file)) return;
2021-09-18 08:21:48 +02:00
showMessage(file);
return;
2021-09-16 01:50:44 +02:00
}
}
} else if (filename.endsWith(".txt")) {
const txt = terminal.getTextFile(player, relative_filename);
2021-09-16 01:50:44 +02:00
if (txt != null) {
txt.show();
return;
}
2022-07-21 21:09:55 +02:00
} else if (filename.endsWith(".script") || filename.endsWith(".js")) {
2021-12-20 11:11:28 +01:00
const script = terminal.getScript(player, relative_filename);
if (script != null) {
dialogBoxCreate(`${script.filename}<br /><br />${script.code}`);
return;
}
2021-09-16 01:50:44 +02:00
}
terminal.error(`No such file ${filename}`);
}