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

35 lines
1.5 KiB
TypeScript

import { Terminal } from "../../Terminal";
import { BaseServer } from "../../Server/BaseServer";
import { showMessage } from "../../Message/MessageHelpers";
import { showLiterature } from "../../Literature/LiteratureHelpers";
import { dialogBoxCreate } from "../../ui/React/DialogBox";
import { hasScriptExtension } from "../../Paths/ScriptFilePath";
import { hasTextExtension } from "../../Paths/TextFilePath";
import { isMember } from "../../utils/EnumHelper";
export function cat(args: (string | number | boolean)[], server: BaseServer): void {
if (args.length !== 1) return Terminal.error("Incorrect usage of cat command. Usage: cat [file]");
const relative_filename = args[0] + "";
const path = Terminal.getFilepath(relative_filename);
if (!path) return Terminal.error(`Invalid filename: ${relative_filename}`);
if (hasScriptExtension(path) || hasTextExtension(path)) {
const file = server.getContentFile(path);
if (!file) return Terminal.error(`No file at path ${path}`);
return dialogBoxCreate(`${file.filename}\n\n${file.content}`);
}
if (!path.endsWith(".msg") && !path.endsWith(".lit")) {
return Terminal.error("Invalid file extension. Filename must end with .msg, .txt, .lit, .script or .js");
}
// Message
if (isMember("MessageFilename", path)) {
if (server.messages.includes(path)) return showMessage(path);
}
if (isMember("LiteratureName", path)) {
if (server.messages.includes(path)) return showLiterature(path);
}
Terminal.error(`No file at path ${path}`);
}