From 45b23e762dbca697e5a0c7b3749e471a3f99df21 Mon Sep 17 00:00:00 2001 From: mixmix Date: Thu, 19 Sep 2024 12:40:29 +1200 Subject: [PATCH 1/2] get all config.get* methods fail safely --- src/config/index.ts | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/config/index.ts b/src/config/index.ts index 2afa3287..e07fbe51 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -54,12 +54,11 @@ export async function init (configPath = CONFIG_PATH, oldConfigPath = OLD_CONFIG await set(newConfig, configPath) } } -function noop () {} export async function get (configPath = CONFIG_PATH) { - const configBuffer = await readFile(configPath) - - return deserialize(configBuffer.toString()) + return readFile(configPath, 'utf-8') + .then(deserialize) + .catch(makeGetErrorHandler(configPath)) } export function getSync (configPath = CONFIG_PATH): EntropyConfig { @@ -67,11 +66,7 @@ export function getSync (configPath = CONFIG_PATH): EntropyConfig { const configBuffer = readFileSync(configPath, 'utf8') return deserialize(configBuffer) } catch (err) { - if (err.code !== 'ENOENT') throw err - - const newConfig = migrateData(allMigrations, {}) - writeFileSync(configPath, serialize(newConfig)) - return newConfig + return makeGetErrorHandler(configPath)(err) } } @@ -79,3 +74,16 @@ export async function set (config: EntropyConfig, configPath = CONFIG_PATH) { await mkdirp(dirname(configPath)) await writeFile(configPath, serialize(config)) } + +/* util */ +function noop () {} + +function makeGetErrorHandler (configPath) { + return function getErrorHandler (err) { + if (err.code !== 'ENOENT') throw err + + const newConfig = migrateData(allMigrations, {}) + writeFileSync(configPath, serialize(newConfig)) + return newConfig + } +} From 4f60498306e13315e961999f038da8d9b7a46da3 Mon Sep 17 00:00:00 2001 From: mixmix Date: Mon, 23 Sep 2024 10:44:22 +1200 Subject: [PATCH 2/2] fix getSync so that it mkdirps --- src/config/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/index.ts b/src/config/index.ts index e07fbe51..73c91e27 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -83,6 +83,7 @@ function makeGetErrorHandler (configPath) { if (err.code !== 'ENOENT') throw err const newConfig = migrateData(allMigrations, {}) + mkdirp.sync(dirname(configPath)) writeFileSync(configPath, serialize(newConfig)) return newConfig }