Cleaning up file sync

This commit is contained in:
aef123 2023-05-06 21:03:06 -07:00
parent 41127abee8
commit 9d8512475b
4 changed files with 25 additions and 21 deletions

View file

@ -13,7 +13,7 @@
}, },
"logFiles": { "logFiles": {
"update": true, "update": true,
"interval": 1, "interval": 30,
"remoteLocation": "/logs/", "remoteLocation": "/logs/",
"localLocation": "D:\\bitburner_game_logs" "localLocation": "D:\\bitburner_game_logs"
}, },

View file

@ -3,6 +3,7 @@ import { config } from "./config";
import { EventType } from "./eventTypes"; import { EventType } from "./eventTypes";
import { mkdir } from "fs/promises"; import { mkdir } from "fs/promises";
import { resolve } from "path"; import { resolve } from "path";
import { getAllFiles } from "./networking/messageGenerators";
import type { Signal } from "signal-js"; import type { Signal } from "signal-js";
import type { File } from "./interfaces"; import type { File } from "./interfaces";
@ -23,6 +24,17 @@ export async function setupLogsFolder() {
} }
} }
export async function monitorLogs(signaller: Signal)
{
if (config.get("logFiles").update) {
await setupLogsFolder();
while(true) {
signaller.emit(EventType.MessageSend, getAllFiles());
await new Promise((resolve) => setTimeout(resolve, config.get("logFiles").interval * 1000));
}
}
}
function isError(err: unknown): err is NodeJS.ErrnoException { function isError(err: unknown): err is NodeJS.ErrnoException {
return (err as NodeJS.ErrnoException).code !== undefined; return (err as NodeJS.ErrnoException).code !== undefined;
} }

View file

@ -1,4 +1,4 @@
import { setupWatch, setupLogsFolder } from "./fileWatch"; import { setupWatch, monitorLogs } from "./fileWatch";
import { config, loadConfig } from "./config"; import { config, loadConfig } from "./config";
import { setupSocket } from "./networking/webSocket"; import { setupSocket } from "./networking/webSocket";
import signal from "signal-js"; import signal from "signal-js";
@ -20,10 +20,9 @@ export async function start() {
const watch = await setupWatch(signal); const watch = await setupWatch(signal);
const socket = setupSocket(signal); const socket = setupSocket(signal);
let isConnected: boolean = false; let isConnected: boolean = false;
await setupLogsFolder();
// Add a handler for received messages. // Add a handler for received messages.
signal.on(EventType.MessageReceived, (msg: RawData) => messageHandler(signal, msg, watch.paths, config.get("logFiles").update, config.get("logFiles").remoteLocation, config.get("logFiles").localLocation)); signal.on(EventType.MessageReceived, (msg: RawData) => messageHandler(signal, msg, watch.paths));
// Add a handler for when a connection to a game is made. // Add a handler for when a connection to a game is made.
signal.on(EventType.ConnectionMade, () => { signal.on(EventType.ConnectionMade, () => {
@ -68,13 +67,5 @@ export async function start() {
process.exit(); process.exit();
}); });
if (config.get("logFiles").update) { await monitorLogs(signal);
while(true) {
if ((isConnected as boolean) === true) {
signal.emit(EventType.MessageSend, getAllFiles());
}
await new Promise((resolve) => setTimeout(resolve, config.get("logFiles").interval * 1000));
}
}
} }

View file

@ -32,14 +32,15 @@ export function isStringArray(s: Array<unknown>): s is string[] {
return s.every((s) => typeof s === "string"); return s.every((s) => typeof s === "string");
} }
export function messageHandler(signaller: Signal, export function messageHandler(signaller: Signal, data: RawData, paths: Map<string, Stats>) {
data: RawData,
paths: Map<string, Stats>, let updateLogs: boolean = config.get("logFiles").update;
updateLogs: boolean, let remoteLogFolder: string = config.get("logFiles").remoteLocation;
remoteLogFolder: string, let localLogFolder: string = config.get("logFiles").localLocation;
localLogFolder: string) {
let incoming; let incoming;
try { try {
incoming = deserialize(data); incoming = deserialize(data);
} catch (err) { } catch (err) {
@ -85,7 +86,7 @@ export function messageHandler(signaller: Signal,
} }
} }
} }
break; break;
} }
} }