diff --git a/README.md b/README.md index 31d758bb74ef9db52b6797a8dcfcc11c300fbba1..2dba117290c98ae127407099b1f7cb8471c64474 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,12 @@ [](https://it-devops-01.br-edv.brnet.int/general/config/commits/master) [](https://it-devops-01.br-edv.brnet.int/general/config/commits/master) +[](https://it-devops-01.br-edv.brnet.int:8999/dashboard?id=config) +[](https://it-devops-01.br-edv.brnet.int:8999/dashboard?id=config) +[](https://it-devops-01.br-edv.brnet.int:8999/dashboard?id=config) +[](https://it-devops-01.br-edv.brnet.int:8999/dashboard?id=config) +[](https://it-devops-01.br-edv.brnet.int:8999/dashboard?id=config) +[](https://it-devops-01.br-edv.brnet.int:8999/dashboard?id=config) Simple Config Log with HashiCorp Vault support. @@ -25,5 +31,4 @@ It reads from the following sources, performing a deep merge: ## TODO / Missing - hashicorp values support: if value == "vault:", treat it as secret -- sonarqube + badges - tests diff --git a/examples/defaults-overwrite/config.defaults.json b/examples/defaults-overwrite/config.defaults.json new file mode 100644 index 0000000000000000000000000000000000000000..8d6cd811d747774867ebb052b1f264b09b099627 --- /dev/null +++ b/examples/defaults-overwrite/config.defaults.json @@ -0,0 +1,6 @@ +{ + "setting":"value", + "another": { + "setting":"avalue" + } +} \ No newline at end of file diff --git a/examples/defaults-overwrite/config.json b/examples/defaults-overwrite/config.json new file mode 100644 index 0000000000000000000000000000000000000000..de6fd1fe02c2f854e2de807c717277de3d25b5e5 --- /dev/null +++ b/examples/defaults-overwrite/config.json @@ -0,0 +1,6 @@ +{ + "setting":"overwritten", + "another": { + "more":"settings" + } +} \ No newline at end of file diff --git a/examples/defaults-overwrite/index.js b/examples/defaults-overwrite/index.js new file mode 100644 index 0000000000000000000000000000000000000000..798f2f4e316f7b522d0f9c53dbaee3fe3fe0d458 --- /dev/null +++ b/examples/defaults-overwrite/index.js @@ -0,0 +1,3 @@ +let config = require('../../index') + +console.log(JSON.stringify(config, undefined, 2)) \ No newline at end of file diff --git a/examples/env/config.defaults.json b/examples/env/config.defaults.json new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/examples/env/config.json b/examples/env/config.json new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/examples/env/index.js b/examples/env/index.js new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/examples/env/server.env b/examples/env/server.env new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/examples/only-defaults/config.defaults.json b/examples/only-defaults/config.defaults.json new file mode 100644 index 0000000000000000000000000000000000000000..8d6cd811d747774867ebb052b1f264b09b099627 --- /dev/null +++ b/examples/only-defaults/config.defaults.json @@ -0,0 +1,6 @@ +{ + "setting":"value", + "another": { + "setting":"avalue" + } +} \ No newline at end of file diff --git a/examples/only-defaults/index.js b/examples/only-defaults/index.js new file mode 100644 index 0000000000000000000000000000000000000000..798f2f4e316f7b522d0f9c53dbaee3fe3fe0d458 --- /dev/null +++ b/examples/only-defaults/index.js @@ -0,0 +1,3 @@ +let config = require('../../index') + +console.log(JSON.stringify(config, undefined, 2)) \ No newline at end of file diff --git a/index.js b/index.js index 18780077d5f67c34ce5205a1b5868d770b50ba8e..ed255cb2682cdcfbe08c567e080bbe7581f484ec 100644 --- a/index.js +++ b/index.js @@ -1,19 +1,11 @@ var fs = require('fs') +var path = require('path') var merge = require('lodash.merge') -let config = {} - -if (fs.accessSync('./config.defaults.json')) { - config = JSON.parse(fs.readFileSync('./config.defaults.json', 'utf8')) -} - -if (fs.accessSync('./config.json')) { - config = merge(config, JSON.parse(fs.readFileSync('./config.json', 'utf8'))) -} +let configDefaults = path.join(path.dirname(require.main.filename || process.mainModule.filename), 'config.defaults.json') +let configLocal = path.join(path.dirname(require.main.filename || process.mainModule.filename), 'config.json') -iterate(config) - -module.exports = config +let config = {} const iterate = function (obj) { for (let index = 0; index < Object.keys(obj).length; index++) { @@ -21,8 +13,29 @@ const iterate = function (obj) { if (process.env[element]) { obj[element] = process.env[element] } + // TODO: encode values here if (typeof element === 'object') { iterate(element) } } -} \ No newline at end of file +} + + +try { + fs.accessSync(configDefaults) + config = JSON.parse(fs.readFileSync(configDefaults, 'utf8')) +} catch (error) { + console.log('Could not read ' + configDefaults) +} + +try { + fs.accessSync(configLocal) + config = merge(config, JSON.parse(fs.readFileSync(configLocal, 'utf8'))) +} catch (error) { + console.log('Could not read ' + configLocal) +} + + +iterate(config) + +module.exports = config \ No newline at end of file