UNPKG

@minecraft/creator-tools

Version:

Minecraft Creator Tools command line and libraries.

107 lines (106 loc) 4.04 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const fs = __importStar(require("fs")); const MinecraftLogItem_1 = __importDefault(require("./MinecraftLogItem")); const ste_events_1 = require("ste-events"); class ContentLogWatcher { _onLogItem = new ste_events_1.EventDispatcher(); _env; logItems = []; constructor(env) { this._env = env; } get onLogItem() { return this._onLogItem.asEvent(); } watchServerFolder() { const mcLogPath = this._env.utilities.localReleaseServerLogPath; if (!mcLogPath || !fs.existsSync(mcLogPath)) { return; } this.watchLogFolder(mcLogPath); } watchMinecraftReleaseFolder() { let mcLogPath = this._env.utilities.localReleaseServerLogPath; if (!mcLogPath) { return; } this.watchLogFolder(mcLogPath); } watchLogFolder(mcLogPath) { const exists = fs.existsSync(mcLogPath); if (exists) { // Log.message("Starting logging of Minecraft logs at '" + mcLogPath + ".'"); const now = new Date(); this.processFolder(mcLogPath, new Date(now.getTime() - 30 * 60 * 1000)); /* fs.watch(mcLogPath, {}, async (eventType: string, fileName: string) => { this.processFile(mcLogPath, fileName); });*/ } } processFolder(mcLogPath, sinceDate) { const sinceDateMs = sinceDate.getTime(); const exists = fs.existsSync(mcLogPath); if (exists) { const files = fs.readdirSync(mcLogPath); for (let i = 0; i < files.length; i++) { const file = files[i]; const stat = fs.statSync(mcLogPath + file); if (stat.isFile() && stat.mtimeMs > sinceDateMs) { this.processFile(mcLogPath, file); } } } } processFile(logPath, fileName) { if (fileName !== null) { fileName = fileName.toLowerCase(); if (fileName.startsWith("contentlog__")) { const content = fs.readFileSync(logPath + fileName, { encoding: "utf8", flag: "r" }); const logItem = new MinecraftLogItem_1.default(); logItem.fileName = fileName; logItem.message = content; this.logItems.push(logItem); this._onLogItem.dispatch(this, logItem); } } } } exports.default = ContentLogWatcher;