From 63a3af73b767a53d0f1a2c39d3bc565431d356ed Mon Sep 17 00:00:00 2001 From: tengattack Date: Mon, 21 Nov 2016 18:11:59 +0800 Subject: [PATCH] Initial commit --- .babelrc | 3 +++ .gitignore | 4 ++++ lib/index.js | 40 ++++++++++++++++++++++++++++++++++++++++ package.json | 35 +++++++++++++++++++++++++++++++++++ src/index.es | 26 ++++++++++++++++++++++++++ 5 files changed, 108 insertions(+) create mode 100644 .babelrc create mode 100644 .gitignore create mode 100644 lib/index.js create mode 100644 package.json create mode 100644 src/index.es diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..1443284 --- /dev/null +++ b/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": [ "es2017-node7" ] +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..18231f7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +node_modules +npm-debug.log + +.DS_Store diff --git a/lib/index.js b/lib/index.js new file mode 100644 index 0000000..55a9428 --- /dev/null +++ b/lib/index.js @@ -0,0 +1,40 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _path = require('path'); + +var _path2 = _interopRequireDefault(_path); + +var _jsYaml = require('js-yaml'); + +var _jsYaml2 = _interopRequireDefault(_jsYaml); + +var _lodash = require('lodash'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const configValidFields = ['render', 'deployer']; + +class HaneConfig { + constructor(root) { + let config; + try { + const configPath = _path2.default.join(root, 'hane.yml'); + const data = fs.readFileSync(configPath, 'utf8'); + config = _jsYaml2.default.safeLoad(data); + config = (0, _lodash.pick)(config, configValidFields); + } catch (e) { + config = {}; + } + this.config = config; + } + get render() { + return this.config.render || {}; + } +} + +exports.default = HaneConfig; + diff --git a/package.json b/package.json new file mode 100644 index 0000000..de22ac3 --- /dev/null +++ b/package.json @@ -0,0 +1,35 @@ +{ + "name": "hane-config", + "version": "0.2.0", + "description": "Config parser for hanejs.", + "main": "lib/index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "build": "babel src/index.es > lib/index.js", + "postinstall": "npm run build" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/hanejs/hane-config.git" + }, + "keywords": [ + "hane", + "hanejs", + "config", + "parser" + ], + "author": "tengattack", + "license": "MIT", + "bugs": { + "url": "https://github.com/hanejs/hane-config/issues" + }, + "homepage": "https://github.com/hanejs/hane-config#readme", + "devDependencies": { + "babel-cli": "^6.18.0", + "babel-preset-es2017-node7": "^0.4.1" + }, + "dependencies": { + "js-yaml": "^3.7.0", + "lodash": "^4.17.2" + } +} diff --git a/src/index.es b/src/index.es new file mode 100644 index 0000000..cf400c5 --- /dev/null +++ b/src/index.es @@ -0,0 +1,26 @@ + +import path from 'path' +import yaml from 'js-yaml' +import { pick } from 'lodash' + +const configValidFields = [ 'render', 'deployer' ] + +class HaneConfig { + constructor(root) { + let config + try { + const configPath = path.join(root, 'hane.yml') + const data = fs.readFileSync(configPath, 'utf8') + config = yaml.safeLoad(data) + config = pick(config, configValidFields) + } catch (e) { + config = {} + } + this.config = config + } + get render() { + return this.config.render || {} + } +} + +export default HaneConfig