wip: move to configDir
This commit is contained in:
		
							parent
							
								
									01ff1d7da5
								
							
						
					
					
						commit
						48b892c323
					
				| @ -5,19 +5,10 @@ var fs = require("fs"); | |||||||
| 
 | 
 | ||||||
| module.exports.create = function(opts) { | module.exports.create = function(opts) { | ||||||
|     var Greenlock = require("@root/greenlock"); |     var Greenlock = require("@root/greenlock"); | ||||||
|  |     var Init = require("./init.js"); | ||||||
|     var greenlock = opts.greenlock; |     var greenlock = opts.greenlock; | ||||||
|     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 = []; |  | ||||||
|     var rc; |  | ||||||
| 
 | 
 | ||||||
|  |     /* | ||||||
|     if (!greenlock && opts.packageRoot) { |     if (!greenlock && opts.packageRoot) { | ||||||
|         try { |         try { | ||||||
|             greenlock = require(path.resolve(opts.packageRoot, "greenlock.js")); |             greenlock = require(path.resolve(opts.packageRoot, "greenlock.js")); | ||||||
| @ -27,105 +18,10 @@ module.exports.create = function(opts) { | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |     */ | ||||||
| 
 | 
 | ||||||
|     if (!greenlock) { |     if (!greenlock) { | ||||||
|         if (opts.packageRoot) { |         opts = Init._init(opts); | ||||||
|             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.maintainerEmail; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         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) { |  | ||||||
|             try { |  | ||||||
|                 rc = JSON.parse(fs.readFileSync(path.resolve(opts.packageRoot, ".greenlockrc"))); |  | ||||||
|             } catch (e) { |  | ||||||
|                 if ("ENOENT" !== e.code) { |  | ||||||
|                     throw e; |  | ||||||
|                 } |  | ||||||
|                 rc = {}; |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             if (opts.configFile && opts.configFile !== rc.configFile) { |  | ||||||
|                 if (rc.configFile) { |  | ||||||
|                     console.info("changing `configFile` from '%s' to '%s'", rc.configFile, opts.configFile); |  | ||||||
|                 } |  | ||||||
|                 rc.configFile = opts.configFile; |  | ||||||
| 
 |  | ||||||
|                 if (!rc.manager) { |  | ||||||
|                     rc.manager = "@greenlock/manager"; |  | ||||||
|                 } |  | ||||||
| 
 |  | ||||||
|                 fs.writeFileSync(path.resolve(opts.packageRoot, ".greenlockrc"), JSON.stringify(rc)); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         if (!greenlock) { |  | ||||||
|         greenlock = Greenlock.create(opts); |         greenlock = Greenlock.create(opts); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -136,7 +32,6 @@ module.exports.create = function(opts) { | |||||||
|     } catch (e) { |     } catch (e) { | ||||||
|         console.error("Developer Error: notify not attached correctly"); |         console.error("Developer Error: notify not attached correctly"); | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| 
 | 
 | ||||||
|     // re-export as top-level function to simplify rpc with workers
 |     // re-export as top-level function to simplify rpc with workers
 | ||||||
|     greenlock.getAcmeHttp01ChallengeResponse = function(opts) { |     greenlock.getAcmeHttp01ChallengeResponse = function(opts) { | ||||||
| @ -164,29 +59,3 @@ module.exports.create = function(opts) { | |||||||
| 
 | 
 | ||||||
|     return greenlock; |     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(); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // ex: "John Doe <john@example.com> (https://john.doe)"
 |  | ||||||
| // ex: "John Doe <john@example.com>"
 |  | ||||||
| // ex: "<john@example.com>"
 |  | ||||||
| // ex: "john@example.com"
 |  | ||||||
| var looseEmailRe = /(^|[\s<])([^'" <>:;`]+@[^'" <>:;`]+\.[^'" <>:;`]+)/; |  | ||||||
| function parseMaintainer(maintainerEmail) { |  | ||||||
|     try { |  | ||||||
|         maintainerEmail = maintainerEmail.match(looseEmailRe)[2]; |  | ||||||
|     } catch (e) { |  | ||||||
|         maintainerEmail = null; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     return maintainerEmail; |  | ||||||
| } |  | ||||||
|  | |||||||
							
								
								
									
										131
									
								
								init.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										131
									
								
								init.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,131 @@ | |||||||
|  | "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 <john@example.com> (https://john.doe)"
 | ||||||
|  | // ex: "John Doe <john@example.com>"
 | ||||||
|  | // ex: "<john@example.com>"
 | ||||||
|  | // ex: "john@example.com"
 | ||||||
|  | var looseEmailRe = /(^|[\s<])([^'" <>:;`]+@[^'" <>:;`]+\.[^'" <>:;`]+)/; | ||||||
|  | function parseMaintainer(maintainerEmail) { | ||||||
|  |     try { | ||||||
|  |         maintainerEmail = maintainerEmail.match(looseEmailRe)[2]; | ||||||
|  |     } catch (e) { | ||||||
|  |         maintainerEmail = null; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     return maintainerEmail; | ||||||
|  | } | ||||||
							
								
								
									
										39
									
								
								rc.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								rc.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,39 @@ | |||||||
|  | "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; | ||||||
|  | }; | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user