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";
|
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-11-20 14:37:11 +01:00
|
|
|
import { checkEnum } from "../../utils/helpers/enum";
|
2021-09-16 01:50:44 +02:00
|
|
|
|
2022-09-06 15:07:12 +02:00
|
|
|
export function cat(args: (string | number | boolean)[], server: BaseServer): void {
|
2021-09-16 01:50:44 +02:00
|
|
|
if (args.length !== 1) {
|
2022-09-06 15:07:12 +02:00
|
|
|
Terminal.error("Incorrect usage of cat command. Usage: cat [file]");
|
2021-09-16 01:50:44 +02:00
|
|
|
return;
|
|
|
|
}
|
2021-12-19 22:03:50 +01:00
|
|
|
const relative_filename = args[0] + "";
|
2022-09-06 15:07:12 +02:00
|
|
|
const filename = Terminal.getFilepath(relative_filename);
|
2023-03-23 17:01:58 +01:00
|
|
|
if (!filename) return Terminal.error(`Invalid filename: ${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
|
|
|
) {
|
2022-09-06 15:07:12 +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")) {
|
2022-09-06 15:07:12 +02:00
|
|
|
const txt = Terminal.getTextFile(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")) {
|
2022-09-06 15:07:12 +02:00
|
|
|
const script = Terminal.getScript(relative_filename);
|
2021-12-20 11:11:28 +01:00
|
|
|
if (script != null) {
|
2022-11-04 12:23:33 +01:00
|
|
|
dialogBoxCreate(`${script.filename}\n\n${script.code}`);
|
2021-12-20 11:11:28 +01:00
|
|
|
return;
|
|
|
|
}
|
2021-09-16 01:50:44 +02:00
|
|
|
}
|
|
|
|
|
2022-09-06 15:07:12 +02:00
|
|
|
Terminal.error(`No such file ${filename}`);
|
2021-09-16 01:50:44 +02:00
|
|
|
}
|