'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 = {}; } // 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 ( rc.manager !== manager || rc.manager.module !== manager.module ) { console.info( "changing `manager` from '%s' to '%s'", rc.manager, 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 ); } rc.configDir = configDir; fs.writeFileSync(rcpath, JSON.stringify(rc)); } else if (!rc.configDir) { configDir = path.resolve(dirname, 'greenlock.d'); rc.configDir = configDir; fs.writeFileSync(rcpath, JSON.stringify(rc)); } return rc; };