ember-cli
Version:
Command line tool for developing ambitious ember.js apps
77 lines (59 loc) • 1.82 kB
JavaScript
var lang = require('mout/lang');
var object = require('mout/object');
var rc = require('./util/rc');
var defaults = require('./util/defaults');
var expand = require('./util/expand');
var path = require('path');
function Config(cwd) {
this._cwd = cwd || process.cwd();
this._config = {};
}
Config.prototype.load = function () {
this._config = rc('bower', defaults, this._cwd);
return this;
};
Config.prototype.get = function (key) {
// TODO
};
Config.prototype.set = function (key, value) {
// TODO
return this;
};
Config.prototype.del = function (key, value) {
// TODO
return this;
};
Config.prototype.save = function (where, callback) {
// TODO
};
Config.prototype.toObject = function () {
var config = lang.deepClone(this._config);
config = Config.normalise(config);
return config;
};
Config.create = function (cwd) {
return new Config(cwd);
};
Config.read = function (cwd) {
var config = new Config(cwd);
return config.load().toObject();
};
Config.normalise = function (rawConfig) {
var config = {};
// Mix in defaults and raw config
object.deepMixIn(config, expand(defaults), expand(rawConfig));
// Some backwards compatible things..
config.shorthandResolver = config.shorthandResolver
.replace(/\{\{\{/g, '{{')
.replace(/\}\}\}/g, '}}');
// Ensure that every registry endpoint does not end with /
config.registry.search = config.registry.search.map(function (url) {
return url.replace(/\/+$/, '');
});
config.registry.register = config.registry.register.replace(/\/+$/, '');
config.registry.publish = config.registry.publish.replace(/\/+$/, '');
config.tmp = path.resolve(config.tmp);
return config;
};
Config.DEFAULT_REGISTRY = defaults.registry;
module.exports = Config;