From 28aad4f29dc7be345965bf8485579fd80f8a7e91 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Mon, 18 Nov 2019 00:53:26 -0700 Subject: [PATCH] wip: simpler config and defaults --- README.md | 27 ++++++---- greenlock-shim.js | 17 ++++-- init.js | 131 ---------------------------------------------- rc.js | 39 -------------- 4 files changed, 29 insertions(+), 185 deletions(-) delete mode 100644 init.js delete mode 100644 rc.js diff --git a/README.md b/README.md index bde3de1..8e000b3 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ npm install --save greenlock-express@v3 ``` ```bash -npx greenlock init --maintainer-email 'jon@example.com' --manager-config-file ./greenlock.json +npx greenlock init --maintainer-email 'jon@example.com' ```
@@ -39,13 +39,11 @@ npx greenlock init --maintainer-email 'jon@example.com' --manager-config-file ./ "use strict"; require("greenlock-express") - .init(function() { - return { - greenlock: require("./greenlock.js"), + .init({ + packageRoot: __dirname, - // whether or not to run at cloudscale - cluster: false - }; + // whether or not to run at cloudscale + cluster: false }) .ready(function(glx) { var app = require("./app.js"); @@ -83,6 +81,8 @@ module.exports = require("@root/greenlock").create({ app.js ```js +"use strict"; + var app = function(req, res) { res.end("Hello, Encrypted World!"); }; @@ -92,14 +92,19 @@ module.exports = app;
-```bash -npx greenlock defaults --subscriber-email 'jon@example.com' --agree-to-terms -``` - ```bash npx greenlock add --subject example.com --altnames example.com ``` +
+greenlock.json + +```json +{ "sites": [{ "subject": "example.com", "altnames": ["example.com"] }] } +``` + +
+ ```bash npm start -- --staging ``` diff --git a/greenlock-shim.js b/greenlock-shim.js index 77687b4..e009de7 100644 --- a/greenlock-shim.js +++ b/greenlock-shim.js @@ -1,11 +1,8 @@ "use strict"; -var path = require("path"); -var fs = require("fs"); - module.exports.create = function(opts) { var Greenlock = require("@root/greenlock"); - var Init = require("./init.js"); + var Init = require("@root/greenlock/init.js"); var greenlock = opts.greenlock; /* @@ -24,6 +21,7 @@ module.exports.create = function(opts) { opts = Init._init(opts); greenlock = Greenlock.create(opts); } + opts.packageAgent = addGreenlockAgent(opts); try { if (opts.notify) { @@ -59,3 +57,14 @@ module.exports.create = function(opts) { return greenlock; }; + +function addGreenlockAgent(opts) { + // Add greenlock as part of Agent, unless this is greenlock + var packageAgent = opts.packageAgent || ""; + if (!/greenlock(-express|-pro)?/i.test(packageAgent)) { + var pkg = require("./package.json"); + packageAgent += " Greenlock_Express/" + pkg.version; + } + + return packageAgent.trim(); +} diff --git a/init.js b/init.js deleted file mode 100644 index 007ce1b..0000000 --- a/init.js +++ /dev/null @@ -1,131 +0,0 @@ -"use strict"; - -var Init = module.exports; - -var fs = require("fs"); -var path = require("path"); - -Init.init = function(opts) { - //var Rc = require("@root/greenlock/rc"); - var Rc = require("./rc.js"); - var pkgText; - var pkgErr; - var msgErr; - //var emailErr; - var realPkg; - var userPkg; - var myPkg = {}; - // we want to be SUPER transparent that we're reading from package.json - // we don't want anything unexpected - var implicitConfig = []; - - if (opts.packageRoot) { - try { - pkgText = fs.readFileSync(path.resolve(opts.packageRoot, "package.json"), "utf8"); - } catch (e) { - pkgErr = e; - console.warn("`packageRoot` should be the root of the package (probably `__dirname`)"); - } - } - - if (pkgText) { - try { - realPkg = JSON.parse(pkgText); - } catch (e) { - pkgErr = e; - } - } - - userPkg = opts.package; - - if (realPkg || userPkg) { - userPkg = userPkg || {}; - realPkg = realPkg || {}; - - // build package agent - if (!opts.packageAgent) { - // name - myPkg.name = userPkg.name; - if (!myPkg.name) { - myPkg.name = realPkg.name; - implicitConfig.push("name"); - } - - // version - myPkg.version = userPkg.version; - if (!myPkg.version) { - myPkg.version = realPkg.version; - implicitConfig.push("version"); - } - if (myPkg.name && myPkg.version) { - opts.packageAgent = myPkg.name + "/" + myPkg.version; - } - } - - // build author - myPkg.author = opts.maintainerEmail; - if (!myPkg.author) { - myPkg.author = (userPkg.author && userPkg.author.email) || userPkg.author; - } - if (!myPkg.author) { - implicitConfig.push("author"); - myPkg.author = (realPkg.author && realPkg.author.email) || realPkg.author; - } - opts.maintainerEmail = myPkg.author; - } - - if (!opts.packageAgent) { - msgErr = "missing `packageAgent` and also failed to read `name` and/or `version` from `package.json`"; - if (pkgErr) { - msgErr += ": " + pkgErr.message; - } - throw new Error(msgErr); - } - - opts.maintainerEmail = parseMaintainer(opts.maintainerEmail); - if (!opts.maintainerEmail) { - msgErr = - "missing or malformed `maintainerEmail` (or `author` from `package.json`), which is used as the contact for support notices"; - throw new Error(msgErr); - } - - opts.packageAgent = addGreenlockAgent(opts); - - if (opts.packageRoot) { - // Place the rc file in the packageroot - opts.configDir = Rc._initSync(opts.packageRoot, opts.configDir); - } - - if (!opts.configDir) { - throw new Error("missing `packageRoot` and `configDir`"); - } - - // Place the rc file in the configDir itself - //Rc._initSync(opts.configDir, opts.configDir); -}; - -function addGreenlockAgent(opts) { - // Add greenlock as part of Agent, unless this is greenlock - var packageAgent = opts.packageAgent || ""; - if (!/greenlock(-express|-pro)?/i.test(packageAgent)) { - var pkg = require("./package.json"); - packageAgent += " Greenlock_Express/" + pkg.version; - } - - return packageAgent.trim(); -} - -// ex: "John Doe (https://john.doe)" -// ex: "John Doe " -// ex: "" -// ex: "john@example.com" -var looseEmailRe = /(^|[\s<])([^'" <>:;`]+@[^'" <>:;`]+\.[^'" <>:;`]+)/; -function parseMaintainer(maintainerEmail) { - try { - maintainerEmail = maintainerEmail.match(looseEmailRe)[2]; - } catch (e) { - maintainerEmail = null; - } - - return maintainerEmail; -} diff --git a/rc.js b/rc.js deleted file mode 100644 index 87fde7b..0000000 --- a/rc.js +++ /dev/null @@ -1,39 +0,0 @@ -"use strict"; - -var Rc = module.exports; -var fs = require("fs"); -var path = require("path"); - -Rc._initSync = function(dirname, configDir) { - // 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 = {}; - } - - 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; - /* if (!rc.manager) { rc.manager = "@greenlock/manager"; } */ - 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 configDir; -};