import {glob, readFile, stat, watch} from 'node:fs/promises'; import path from 'node:path'; const steamUserID = process.env.STEAM_USER_ID; const homeDir = process.env.HOME; const solutionsDir = `${homeDir}/.local/share/Opus Magnum/${steamUserID}`; async function readSolutionName (solutionPath) { const buf = await readFile(solutionPath); return buf.subarray(0x0A, 0x0A + buf[0x09]).toString('utf-8'); } const solutionNames = Object.create(null); for await (const solutionPath of glob(path.join(solutionsDir, '*.solution'))) { const solutionName = await readSolutionName(solutionPath); solutionNames[solutionPath] = solutionName; } for await (const {filename} of watch(solutionsDir)) { if (path.extname(filename) !== '.solution') continue; // ignore options etc const solutionPath = path.join(solutionsDir, filename); if (!(await stat(solutionPath)).isFile) continue; // ignore deleted const solutionName = await readSolutionName(solutionPath); if (solutionName !== solutionNames[solutionPath]) { console.log( 'changed:', filename, solutionNames[solutionPath], '->', solutionName ); solutionNames[solutionPath] = solutionName; } }