diff --git a/app/common/ValueCache.mjs b/app/common/ValueCache.mjs index 22fa2d6..2f3c61c 100644 --- a/app/common/ValueCache.mjs +++ b/app/common/ValueCache.mjs @@ -1,5 +1,6 @@ import fs from 'fs/promises'; import path from 'path'; +import { mkdirp } from './fs.mjs'; export default class ValueCache { constructor(key) { @@ -47,7 +48,7 @@ export default class ValueCache let cachedAt = new Date; let serialized = JSON.stringify({ expires, data, cachedAt }, undefined, 2); - await fs.mkdir(path.dirname(this.path), { recursive: true }); + await mkdirp(path.dirname(this.path)); await fs.writeFile(this.path, serialized); } } diff --git a/app/common/fs.mjs b/app/common/fs.mjs index 0a60601..c673623 100644 --- a/app/common/fs.mjs +++ b/app/common/fs.mjs @@ -1,5 +1,9 @@ import fs from 'fs/promises'; +export function mkdirp(dir) { + return fs.mkdir(dir, { recursive: true }); +} + export async function exists(file) { try { await fs.access(file); diff --git a/app/data/ImageProcessor.mjs b/app/data/ImageProcessor.mjs index 6cfd0fd..254b36f 100644 --- a/app/data/ImageProcessor.mjs +++ b/app/data/ImageProcessor.mjs @@ -3,7 +3,7 @@ import path from 'path'; import PQueue from 'p-queue'; import prefixedConsole from '../common/prefixedConsole.mjs'; import { normalizeSplatnetResourcePath } from '../common/util.mjs'; -import { exists } from '../common/fs.mjs'; +import { exists, mkdirp } from '../common/fs.mjs'; const queue = new PQueue({ concurrency: 4 }); @@ -69,7 +69,7 @@ export default class ImageProcessor throw new Error(`Invalid image response code: ${result.status}`); } - await fs.mkdir(path.dirname(this.localPath(destination)), { recursive: true }); + await mkdirp(path.dirname(this.localPath(destination))); await fs.writeFile(this.localPath(destination), result.body); } catch (e) { this.console.error(`Image download failed for ${destination}`, e); diff --git a/app/data/LocalizationProcessor.mjs b/app/data/LocalizationProcessor.mjs index 6b05cd1..f43cda8 100644 --- a/app/data/LocalizationProcessor.mjs +++ b/app/data/LocalizationProcessor.mjs @@ -1,5 +1,6 @@ import fs from 'fs/promises'; import path from 'path'; +import { mkdirp } from '../common/fs.mjs'; import { jsonpathQuery } from '../common/util.mjs'; import get from 'lodash/get.js'; import set from 'lodash/set.js'; @@ -91,7 +92,7 @@ export class LocalizationProcessor { data = JSON.stringify(data, undefined, space); - await fs.mkdir(path.dirname(this.filename), { recursive: true }); + await mkdirp(path.dirname(this.filename)); await fs.writeFile(this.filename, data); } diff --git a/app/data/updaters/DataUpdater.mjs b/app/data/updaters/DataUpdater.mjs index 03e7998..ec3357f 100644 --- a/app/data/updaters/DataUpdater.mjs +++ b/app/data/updaters/DataUpdater.mjs @@ -1,6 +1,7 @@ import fs from 'fs/promises'; import path from 'path'; import { Console } from 'node:console'; +import { mkdirp } from '../../common/fs.mjs'; import ical from 'ical-generator'; import pFilter from 'p-filter'; import prefixedConsole from '../../common/prefixedConsole.mjs'; @@ -215,7 +216,7 @@ export default class DataUpdater } async writeFile(file, data) { - await fs.mkdir(path.dirname(file), { recursive: true }); + await mkdirp(path.dirname(file)); await fs.writeFile(file, data); } diff --git a/app/social/clients/FileWriter.mjs b/app/social/clients/FileWriter.mjs index 1d47b33..561de97 100644 --- a/app/social/clients/FileWriter.mjs +++ b/app/social/clients/FileWriter.mjs @@ -1,4 +1,5 @@ import fs from 'fs/promises'; +import { mkdirp } from '../../common/fs.mjs'; import Client from './Client.mjs'; export default class FileWriter extends Client { @@ -8,7 +9,7 @@ export default class FileWriter extends Client { dir = 'temp'; async send(status, generator) { - await fs.mkdir(this.dir, { recursive: true }); + await mkdirp(this.dir); if (status.media?.length > 0) { let imgFilename = `${this.dir}/${generator.key}.png`; diff --git a/app/social/clients/ImageWriter.mjs b/app/social/clients/ImageWriter.mjs index 62d0a68..0b0100f 100644 --- a/app/social/clients/ImageWriter.mjs +++ b/app/social/clients/ImageWriter.mjs @@ -1,4 +1,5 @@ import fs from 'fs/promises'; +import { mkdirp } from '../../common/fs.mjs'; import Client from './Client.mjs'; export default class ImageWriter extends Client { @@ -12,7 +13,7 @@ export default class ImageWriter extends Client { return; } - await fs.mkdir(this.dir, { recursive: true }); + await mkdirp(this.dir); let imgFilename = `${this.dir}/${generator.key}.png`; await fs.writeFile(imgFilename, status.media[0].file);