From aaee2dc8b7ceede65fd3bf370357cbc3983d2b77 Mon Sep 17 00:00:00 2001 From: Eliot Partridge Date: Thu, 29 Aug 2019 22:57:21 -0500 Subject: [PATCH 1/4] Create settings and stats directories ad-hoc --- src/ts/server/settings.ts | 16 ++++++++++------ src/ts/server/stats.ts | 6 ++++++ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/ts/server/settings.ts b/src/ts/server/settings.ts index e234561..507403a 100644 --- a/src/ts/server/settings.ts +++ b/src/ts/server/settings.ts @@ -1,4 +1,4 @@ -import { readFileAsync, writeFileAsync } from 'fs'; +import { readFileAsync, writeFileAsync, mkdirAsync } from 'fs'; import { Settings } from '../common/adminInterfaces'; import { cloneDeep } from '../common/utils'; import * as paths from './paths'; @@ -18,13 +18,17 @@ export async function loadSettings() { const json = await readFileAsync(settingsPath, 'utf8'); return JSON.parse(json) as Settings; } catch (e) { - if (e === 'ENOENT') { - writeFileAsync(settingsPath, '{}', 'utf8'); - return {} as Settings; + if (e.code === 'ENOENT') { + try { + await mkdirAsync(paths.pathTo('settings')); + } catch (e2) { + if (e2.code !== 'EEXIST') console.error('Failed to create settings directory: ' + e2); + } } else { - console.log("Error reading settings file: " + e); - return {} as Settings; + console.error('Error reading settings file: ' + e); } + + return cloneDeep(defaultSettings); } } diff --git a/src/ts/server/stats.ts b/src/ts/server/stats.ts index 9a93a95..0b282e6 100644 --- a/src/ts/server/stats.ts +++ b/src/ts/server/stats.ts @@ -1,4 +1,5 @@ import * as fs from 'fs'; +import * as path from 'path'; import * as moment from 'moment'; import { compact } from 'lodash'; import { Request } from 'express'; @@ -188,6 +189,11 @@ export class StatsTracker { } startStatTracking() { if (!fs.existsSync(this.statsPath)) { + try { + fs.mkdirSync(path.dirname(this.statsPath), { recursive: true }); + } catch (e) { + if (e.code !== 'EEXIST') console.error('Failed to create stats directory: ' + e); + } fs.writeFileSync(this.statsPath, encodeCSV(statsHeaders), { encoding: 'utf8' }); } From 0d04bc06aeffa3bc61b0899cf0d0d638d2f0a182 Mon Sep 17 00:00:00 2001 From: Eliot Partridge Date: Thu, 29 Aug 2019 23:14:37 -0500 Subject: [PATCH 2/4] Blow up if the error isn't EEXIST --- src/ts/server/settings.ts | 2 +- src/ts/server/stats.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ts/server/settings.ts b/src/ts/server/settings.ts index 507403a..ff0aae0 100644 --- a/src/ts/server/settings.ts +++ b/src/ts/server/settings.ts @@ -22,7 +22,7 @@ export async function loadSettings() { try { await mkdirAsync(paths.pathTo('settings')); } catch (e2) { - if (e2.code !== 'EEXIST') console.error('Failed to create settings directory: ' + e2); + if (e2.code !== 'EEXIST') throw e; } } else { console.error('Error reading settings file: ' + e); diff --git a/src/ts/server/stats.ts b/src/ts/server/stats.ts index 0b282e6..e541476 100644 --- a/src/ts/server/stats.ts +++ b/src/ts/server/stats.ts @@ -192,7 +192,7 @@ export class StatsTracker { try { fs.mkdirSync(path.dirname(this.statsPath), { recursive: true }); } catch (e) { - if (e.code !== 'EEXIST') console.error('Failed to create stats directory: ' + e); + if (e.code !== 'EEXIST') throw e; } fs.writeFileSync(this.statsPath, encodeCSV(statsHeaders), { encoding: 'utf8' }); } From 41d5b1ec7de5ed88e6f43d3cab10a2d00cccc525 Mon Sep 17 00:00:00 2001 From: Eliot Partridge Date: Thu, 29 Aug 2019 23:15:29 -0500 Subject: [PATCH 3/4] Blow up for settings as well --- src/ts/server/settings.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ts/server/settings.ts b/src/ts/server/settings.ts index ff0aae0..5c3d4e2 100644 --- a/src/ts/server/settings.ts +++ b/src/ts/server/settings.ts @@ -25,7 +25,7 @@ export async function loadSettings() { if (e2.code !== 'EEXIST') throw e; } } else { - console.error('Error reading settings file: ' + e); + throw e; } return cloneDeep(defaultSettings); From 3fbdcc47cfd9bcbeaf970b8605b3c419c5543a2a Mon Sep 17 00:00:00 2001 From: Eliot Partridge Date: Thu, 29 Aug 2019 23:19:07 -0500 Subject: [PATCH 4/4] Shouldn't blow up here, actually. whoops. Revert "Blow up for settings as well" This reverts commit 41d5b1ec7de5ed88e6f43d3cab10a2d00cccc525. --- src/ts/server/settings.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ts/server/settings.ts b/src/ts/server/settings.ts index 5c3d4e2..ff0aae0 100644 --- a/src/ts/server/settings.ts +++ b/src/ts/server/settings.ts @@ -25,7 +25,7 @@ export async function loadSettings() { if (e2.code !== 'EEXIST') throw e; } } else { - throw e; + console.error('Error reading settings file: ' + e); } return cloneDeep(defaultSettings);