From 2fef943bf1c52e8d2be64521202936ca0f7358e3 Mon Sep 17 00:00:00 2001 From: Alan Pearce Date: Sun, 18 Jun 2017 20:07:14 +0200 Subject: feat: use configly/TOML for configuration --- config/default.toml | 5 +++++ package.json | 4 +++- src/index.js | 8 +++++--- src/modules/config.js | 10 ++++++++++ test/index.test.js | 4 +++- yarn.lock | 37 ++++++++++++++++++++++++++++++++++++- 6 files changed, 62 insertions(+), 6 deletions(-) create mode 100644 config/default.toml create mode 100644 src/modules/config.js diff --git a/config/default.toml b/config/default.toml new file mode 100644 index 0000000..3026849 --- /dev/null +++ b/config/default.toml @@ -0,0 +1,5 @@ +[server] +port = 3000 + +[posts] +folder = "../posts" \ No newline at end of file diff --git a/package.json b/package.json index e25d390..93f2ddf 100644 --- a/package.json +++ b/package.json @@ -29,10 +29,12 @@ "supertest": "^3.0.0" }, "dependencies": { + "configly": "^4.1.0", "gray-matter": "^2.1.1", "koa": "^2.2.0", "koa-nunjucks-next": "^1.1.3", "koa-router": "^7.2.1", - "markdown-it": "^8.3.1" + "markdown-it": "^8.3.1", + "toml": "^2.3.2" } } diff --git a/src/index.js b/src/index.js index 242b298..6df1530 100644 --- a/src/index.js +++ b/src/index.js @@ -1,17 +1,19 @@ 'use strict' -const PORT = process.env.PORT || 3000 - const Koa = require('koa') const app = new Koa() +const config = require('./modules/config.js') + +const PORT = process.env.PORT || config.server.port + const Router = require('koa-router') const router = new Router() const view = require('koa-nunjucks-next') const Posts = require('./modules/posts.js') -const posts = Posts.getFolder(process.env.POST_DIR) +const posts = Posts.getFolder(config.posts.folder) app.use( view(`${__dirname}/views`, { diff --git a/src/modules/config.js b/src/modules/config.js new file mode 100644 index 0000000..461945d --- /dev/null +++ b/src/modules/config.js @@ -0,0 +1,10 @@ +'use strict' + +const TOML = require('toml') +const config = require('configly') + +module.exports = config({ + parsers: { + toml: TOML.parse + } +}) diff --git a/test/index.test.js b/test/index.test.js index e13e52c..926c5d4 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -2,7 +2,9 @@ const test = require('ava') const path = require('path') const request = require('supertest') -process.env.POST_DIR = path.resolve(__dirname, '../test/data/') +const config = require('../src/modules/config.js') +config.posts.folder = path.resolve(__dirname, './data/') + const app = require('../src/index.js') test('homepage', t => { diff --git a/yarn.lock b/yarn.lock index 297ce30..f4406a4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -941,6 +941,10 @@ commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" +compare-property@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/compare-property/-/compare-property-2.0.0.tgz#e535ae960832a16ab01c5e6af2e96bc845134700" + component-emitter@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" @@ -957,6 +961,16 @@ concat-stream@^1.5.2: readable-stream "^2.2.2" typedarray "^0.0.6" +configly@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/configly/-/configly-4.1.0.tgz#48a6af73cddd1e4d98d44fe264b78db2b0880bce" + dependencies: + compare-property "^2.0.0" + deeply "^2.0.3" + fulcon "^1.0.2" + precise-typeof "^1.0.2" + stripbom "^3.0.0" + configstore@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.0.tgz#45df907073e26dfa1cf4b2d52f5b60545eaa11d1" @@ -1127,6 +1141,13 @@ deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" +deeply@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/deeply/-/deeply-2.0.3.tgz#613b1fe7380c00e36df896872f0efaecb1642342" + dependencies: + fulcon "^1.0.1" + precise-typeof "^1.0.2" + define-properties@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" @@ -1756,6 +1777,10 @@ fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: mkdirp ">=0.5 0" rimraf "2" +fulcon@^1.0.1, fulcon@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/fulcon/-/fulcon-1.0.2.tgz#8a4dfda4c73fcd9cc62a79d5045c392b45547320" + function-bind@^1.0.2, function-bind@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" @@ -2156,7 +2181,7 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" -is-buffer@^1.1.5: +is-buffer@^1.1.1, is-buffer@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" @@ -3393,6 +3418,12 @@ pluralize@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" +precise-typeof@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/precise-typeof/-/precise-typeof-1.0.2.tgz#db8ed470fd08470f5ef7c9b08ee70d6dd5232f0b" + dependencies: + is-buffer "^1.1.1" + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -4049,6 +4080,10 @@ strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" +stripbom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stripbom/-/stripbom-3.0.0.tgz#0159d615b4ebcdfa78aae57c87d4f81e96ed979b" + superagent@^3.0.0: version "3.5.2" resolved "https://registry.yarnpkg.com/superagent/-/superagent-3.5.2.tgz#3361a3971567504c351063abeaae0faa23dbf3f8" -- cgit 1.4.1