From 31744a69dde6e59bb8ffe6c26399839f736fcb4c Mon Sep 17 00:00:00 2001
From: Dominik Sigmund <dominik.sigmund@br.de>
Date: Wed, 19 Feb 2020 12:33:32 +0100
Subject: [PATCH] Added Examples

---
 README.md                                     |  7 +++-
 .../defaults-overwrite/config.defaults.json   |  6 +++
 examples/defaults-overwrite/config.json       |  6 +++
 examples/defaults-overwrite/index.js          |  3 ++
 examples/env/config.defaults.json             |  0
 examples/env/config.json                      |  0
 examples/env/index.js                         |  0
 examples/env/server.env                       |  0
 examples/only-defaults/config.defaults.json   |  6 +++
 examples/only-defaults/index.js               |  3 ++
 index.js                                      | 39 ++++++++++++-------
 11 files changed, 56 insertions(+), 14 deletions(-)
 create mode 100644 examples/defaults-overwrite/config.defaults.json
 create mode 100644 examples/defaults-overwrite/config.json
 create mode 100644 examples/defaults-overwrite/index.js
 create mode 100644 examples/env/config.defaults.json
 create mode 100644 examples/env/config.json
 create mode 100644 examples/env/index.js
 create mode 100644 examples/env/server.env
 create mode 100644 examples/only-defaults/config.defaults.json
 create mode 100644 examples/only-defaults/index.js

diff --git a/README.md b/README.md
index 31d758b..2dba117 100644
--- a/README.md
+++ b/README.md
@@ -2,6 +2,12 @@
 
 [![pipeline status](https://it-devops-01.br-edv.brnet.int/general/config/badges/master/pipeline.svg)](https://it-devops-01.br-edv.brnet.int/general/config/commits/master)
 [![coverage report](https://it-devops-01.br-edv.brnet.int/general/config/badges/master/coverage.svg)](https://it-devops-01.br-edv.brnet.int/general/config/commits/master)
+[![Quality Gate Status](https://it-devops-01.br-edv.brnet.int:8999/api/project_badges/measure?project=config&metric=alert_status)](https://it-devops-01.br-edv.brnet.int:8999/dashboard?id=config)
+[![Maintainability Rating](https://it-devops-01.br-edv.brnet.int:8999/api/project_badges/measure?project=config&metric=sqale_rating)](https://it-devops-01.br-edv.brnet.int:8999/dashboard?id=config)
+[![Reliability Rating](https://it-devops-01.br-edv.brnet.int:8999/api/project_badges/measure?project=config&metric=reliability_rating)](https://it-devops-01.br-edv.brnet.int:8999/dashboard?id=config)
+[![Security Rating](https://it-devops-01.br-edv.brnet.int:8999/api/project_badges/measure?project=config&metric=security_rating)](https://it-devops-01.br-edv.brnet.int:8999/dashboard?id=config)
+[![Technical Debt](https://it-devops-01.br-edv.brnet.int:8999/api/project_badges/measure?project=config&metric=sqale_index)](https://it-devops-01.br-edv.brnet.int:8999/dashboard?id=config)
+[![Vulnerabilities](https://it-devops-01.br-edv.brnet.int:8999/api/project_badges/measure?project=config&metric=vulnerabilities)](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 0000000..8d6cd81
--- /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 0000000..de6fd1f
--- /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 0000000..798f2f4
--- /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 0000000..e69de29
diff --git a/examples/env/config.json b/examples/env/config.json
new file mode 100644
index 0000000..e69de29
diff --git a/examples/env/index.js b/examples/env/index.js
new file mode 100644
index 0000000..e69de29
diff --git a/examples/env/server.env b/examples/env/server.env
new file mode 100644
index 0000000..e69de29
diff --git a/examples/only-defaults/config.defaults.json b/examples/only-defaults/config.defaults.json
new file mode 100644
index 0000000..8d6cd81
--- /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 0000000..798f2f4
--- /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 1878007..ed255cb 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
-- 
GitLab