UNPKG

binci

Version:

Utility for running containerized development workflows

52 lines (47 loc) 1.38 kB
'use strict' const yaml = require('js-yaml') const fs = require('fs') const path = require('path') const _ = require('halcyon') const config = { /** * @property {string} Default location of binci.yml config file */ defaultPath: `${process.cwd()}/binci.yml`, /** * Loads config from yaml, attempts to parse to object * @param {string} (configPath) Path to config file or use defaultPath * @returns {object} */ load: (configPath = config.defaultPath) => { try { fs.statSync(configPath) } catch (err) { throw new Error([ `No config found at ${configPath}.`, 'Please run `binci init` to create a binci.yml file or specify one with the `-c` flag.' ].join(' ')) } let cfg try { cfg = yaml.safeLoad(fs.readFileSync(configPath, 'utf8')) } catch (e) { const relPath = path.relative(process.cwd(), configPath) const error = new Error(`Please fix the errors in ${relPath}`) error.message = error.message + `:\n\n${e.message}` throw error } return config.validate(cfg) }, /** * Filters out empty config properties * @param {object} cfg * @returns {object} */ validate: (cfg) => _.pipe([ _.toPairs, _.reject(([key, val]) => !_.contains(key, ['tasks']) && _.isEmpty(val) || _.isNil(val)), _.fromPairs ])(cfg) } module.exports = config