78 lines
2.0 KiB
JavaScript
78 lines
2.0 KiB
JavaScript
'use strict';
|
|
|
|
var Rc = module.exports;
|
|
var fs = require('fs');
|
|
var path = require('path');
|
|
|
|
// This is only called if packageRoot is specified
|
|
// (which it should be most of the time)
|
|
Rc._initSync = function(dirname, manager, configDir) {
|
|
if (!dirname) {
|
|
return {};
|
|
}
|
|
|
|
// dirname / opts.packageRoot
|
|
var rcpath = path.resolve(dirname, '.greenlockrc');
|
|
var rc;
|
|
|
|
try {
|
|
rc = JSON.parse(fs.readFileSync(rcpath));
|
|
} catch (e) {
|
|
if ('ENOENT' !== e.code) {
|
|
throw e;
|
|
}
|
|
rc = {};
|
|
}
|
|
|
|
var changed = true;
|
|
|
|
// In the general case the manager should be specified in the
|
|
// config file, which is in the config dir, but for the specific
|
|
// case in which all custom plugins are being used and no config
|
|
// dir is needed, we allow the manager to be read from the rc.
|
|
// ex: manager: { module: 'name', xxxx: 'xxxx' }
|
|
if (manager) {
|
|
if (rc.manager) {
|
|
if (
|
|
('string' === typeof rc.manager && rc.manager !== manager) ||
|
|
('string' !== typeof rc.manager &&
|
|
rc.manager.module !== manager.module)
|
|
) {
|
|
changed = true;
|
|
console.info(
|
|
"changing `manager` from '%s' to '%s'",
|
|
rc.manager.module || rc.manager,
|
|
manager.module || manager
|
|
);
|
|
}
|
|
}
|
|
rc.manager = manager;
|
|
}
|
|
|
|
if (!configDir) {
|
|
configDir = rc.configDir;
|
|
}
|
|
|
|
if (configDir && configDir !== rc.configDir) {
|
|
if (rc.configDir) {
|
|
console.info(
|
|
"changing `configDir` from '%s' to '%s'",
|
|
rc.configDir,
|
|
configDir
|
|
);
|
|
}
|
|
changed = true;
|
|
rc.configDir = configDir;
|
|
} else if (!rc.configDir) {
|
|
changed = true;
|
|
configDir = './greenlock.d';
|
|
rc.configDir = configDir;
|
|
}
|
|
|
|
if (changed) {
|
|
fs.writeFileSync(rcpath, JSON.stringify(rc));
|
|
}
|
|
|
|
return rc;
|
|
};
|