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

54 lines
1.8 KiB
TypeScript
Raw Normal View History

2021-09-16 01:50:44 +02:00
import { ITerminal } from "../ITerminal";
import { IEngine } from "../../IEngine";
import { IPlayer } from "../../PersonObjects/IPlayer";
import { BaseServer } from "../../Server/BaseServer";
import { showMessage } from "../../Message/MessageHelpers";
import { Message } from "../../Message/Message";
import { showLiterature } from "../../Literature/LiteratureHelpers";
export function cat(
terminal: ITerminal,
engine: IEngine,
player: IPlayer,
server: BaseServer,
args: (string | number)[],
): void {
if (args.length !== 1) {
terminal.error("Incorrect usage of cat command. Usage: cat [file]");
return;
}
const filename = terminal.getFilepath(args[0] + "");
if (!filename.endsWith(".msg") && !filename.endsWith(".lit") && !filename.endsWith(".txt")) {
terminal.error(
"Only .msg, .txt, and .lit files are viewable with cat (filename must end with .msg, .txt, or .lit)",
);
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];
if (file instanceof Message) throw new Error(".lit file should not be a .msg");
showLiterature(file);
return;
} else if (filename.endsWith(".msg")) {
const file = server.messages[i];
if (typeof file === "string") throw new Error(".msg file should not be a .lit");
if (file.filename === filename) {
showMessage(file);
return;
}
}
}
} else if (filename.endsWith(".txt")) {
const txt = terminal.getTextFile(player, filename);
if (txt != null) {
txt.show();
return;
}
}
terminal.error(`No such file ${filename}`);
}