bitburner-filesync/src/index.js
Zoë Hoekstra 880cc5be51
Synchronize missing files on start (rq #4044)
Synchronize files that the game doesn't have yet, skip any files it
knows about already.
Requires Bitburner PR #4044: https://github.com/danielyxie/bitburner/pull/4044
2022-08-25 23:46:43 +02:00

50 lines
No EOL
1.8 KiB
JavaScript

"use strict"
import { setupWatch } from "./fileWatch.js";
import { config, loadConfig } from "./config.js";
import { setupSocket } from "./networking/webSocket.js";
import signal from "signal-js";
import { fileChangeEventToMsg, fileRemovalEventToMsg, requestFilenames } from "./networking/messageGenerators.js";
import { EventType } from "./eventTypes.js";
import { messageHandler } from "./networking/messageHandler.js";
export async function start() {
loadConfig();
const watch = await setupWatch(signal);
const socket = setupSocket(signal);
// Add a handler for received messages.
signal.on(EventType.MessageReceived, msg => messageHandler(signal, msg));
// Add a handler for when a connection to a game is made.
signal.on(EventType.ConnectionMade, () => {
console.log("Connection made!");
if (config.get("definitionFile").update) {
signal.emit(EventType.MessageSend, requestDefinitionFile());
}
// Upload missing files to the game.
signal.emit(EventType.MessageSend, requestFilenames());
})
// Add a handler for changed files.
signal.on(EventType.FileChanged, fileEvent => {
if (!config.get("quiet")) console.log(fileEvent.path + " changed");
signal.emit(EventType.MessageSend, fileChangeEventToMsg(fileEvent))
});
// Add a handler for removed files, if allowed.
if (config.get("allowDeletingFiles"))
signal.on(EventType.FileDeleted, fileEvent =>
signal.emit(EventType.MessageSend, fileRemovalEventToMsg(fileEvent)));
console.log(`Server is ready, running on ${config.get("port")}!`)
process.on('SIGINT', function () {
console.log("Shutting down!");
watch.close();
socket.close();
process.exit();
});
}