| 
									
										
										
										
											2019-11-03 02:51:32 -07:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var P = require('../plugins.js'); | 
					
						
							|  |  |  | var args = process.argv.slice(3); | 
					
						
							|  |  |  | var cli = require('./lib/cli.js'); | 
					
						
							|  |  |  | //var path = require('path');
 | 
					
						
							|  |  |  | //var pkgpath = path.join(__dirname, '..', 'package.json');
 | 
					
						
							|  |  |  | //var pkgpath = path.join(process.cwd(), 'package.json');
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var Flags = require('./lib/flags.js'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var flagOptions = Flags.flags(); | 
					
						
							|  |  |  | var myFlags = {}; | 
					
						
							|  |  |  | ['maintainer-email', 'cluster', 'manager', 'manager-xxxx'].forEach(function(k) { | 
					
						
							|  |  |  |     myFlags[k] = flagOptions[k]; | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | cli.parse(myFlags); | 
					
						
							|  |  |  | cli.main(async function(argList, flags) { | 
					
						
							|  |  |  |     var path = require('path'); | 
					
						
							|  |  |  |     var pkgpath = path.join(process.cwd(), 'package.json'); | 
					
						
							|  |  |  |     var pkgdir = path.dirname(pkgpath); | 
					
						
							|  |  |  |     //var rcpath = path.join(pkgpath, '.greenlockrc');
 | 
					
						
							|  |  |  |     var manager = flags.manager; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (['fs', 'cloud'].includes(manager)) { | 
					
						
							| 
									
										
										
										
											2019-11-05 00:01:31 -07:00
										 |  |  |         manager = '@greenlock/manager'; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if (['cloud'].includes(manager)) { | 
					
						
							|  |  |  |         flags.managerOpts.cloud = true; | 
					
						
							| 
									
										
										
										
											2019-11-03 02:51:32 -07:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2019-11-05 00:01:31 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-03 02:51:32 -07:00
										 |  |  |     flags.manager = flags.managerOpts; | 
					
						
							|  |  |  |     delete flags.managerOpts; | 
					
						
							|  |  |  |     flags.manager.manager = manager; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     try { | 
					
						
							|  |  |  |         P._loadSync(manager); | 
					
						
							|  |  |  |     } catch (e) { | 
					
						
							|  |  |  |         try { | 
					
						
							|  |  |  |             P._installSync(manager); | 
					
						
							|  |  |  |         } catch (e) { | 
					
						
							|  |  |  |             console.error( | 
					
						
							|  |  |  |                 'error:', | 
					
						
							|  |  |  |                 JSON.stringify(manager), | 
					
						
							|  |  |  |                 'could not be loaded, and could not be installed.' | 
					
						
							|  |  |  |             ); | 
					
						
							|  |  |  |             process.exit(1); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     var GreenlockRc = require('./lib/greenlockrc.js'); | 
					
						
							|  |  |  |     //var rc = await GreenlockRc(pkgpath, manager, flags.manager);
 | 
					
						
							|  |  |  |     await GreenlockRc(pkgpath, manager, flags.manager); | 
					
						
							| 
									
										
										
										
											2019-11-05 00:01:31 -07:00
										 |  |  |     writeGreenlockJs(pkgdir, flags); | 
					
						
							| 
									
										
										
										
											2019-11-03 02:51:32 -07:00
										 |  |  |     writeServerJs(pkgdir, flags); | 
					
						
							|  |  |  |     writeAppJs(pkgdir); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* | 
					
						
							|  |  |  |     rc._bin_mode = true; | 
					
						
							|  |  |  |     var Greenlock = require('../'); | 
					
						
							|  |  |  |     // this is a copy, so it's safe to modify
 | 
					
						
							|  |  |  |     var greenlock = Greenlock.create(rc); | 
					
						
							|  |  |  |     var mconf = await greenlock.manager.defaults(); | 
					
						
							|  |  |  |     var flagOptions = Flags.flags(mconf, myOpts); | 
					
						
							|  |  |  |     */ | 
					
						
							|  |  |  | }, args); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-05 00:01:31 -07:00
										 |  |  | function writeGreenlockJs(pkgdir, flags) { | 
					
						
							|  |  |  |     var greenlockJs = 'greenlock.js'; | 
					
						
							|  |  |  |     var fs = require('fs'); | 
					
						
							|  |  |  |     var path = require('path'); | 
					
						
							|  |  |  |     var tmpl = fs.readFileSync( | 
					
						
							|  |  |  |         path.join(__dirname, 'tmpl/greenlock.tmpl.js'), | 
					
						
							|  |  |  |         'utf8' | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     try { | 
					
						
							|  |  |  |         fs.accessSync(path.join(pkgdir, greenlockJs)); | 
					
						
							|  |  |  |         console.warn("[skip] '%s' exists", greenlockJs); | 
					
						
							|  |  |  |         return; | 
					
						
							|  |  |  |     } catch (e) { | 
					
						
							|  |  |  |         // continue
 | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (flags.cluster) { | 
					
						
							|  |  |  |         tmpl = tmpl.replace( | 
					
						
							|  |  |  |             /options.cluster = false/g, | 
					
						
							|  |  |  |             'options.cluster = true' | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if (flags.maintainerEmail) { | 
					
						
							|  |  |  |         tmpl = tmpl.replace( | 
					
						
							|  |  |  |             /pkg.author/g, | 
					
						
							|  |  |  |             JSON.stringify(flags.maintainerEmail) | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     fs.writeFileSync(path.join(pkgdir, greenlockJs), tmpl); | 
					
						
							|  |  |  |     console.info("created '%s'", greenlockJs); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-03 02:51:32 -07:00
										 |  |  | function writeServerJs(pkgdir, flags) { | 
					
						
							|  |  |  |     var serverJs = 'server.js'; | 
					
						
							|  |  |  |     var fs = require('fs'); | 
					
						
							|  |  |  |     var path = require('path'); | 
					
						
							|  |  |  |     var tmpl = fs.readFileSync( | 
					
						
							|  |  |  |         path.join(__dirname, 'tmpl/server.tmpl.js'), | 
					
						
							|  |  |  |         'utf8' | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     try { | 
					
						
							|  |  |  |         fs.accessSync(path.join(pkgdir, serverJs)); | 
					
						
							| 
									
										
										
										
											2019-11-05 00:01:31 -07:00
										 |  |  |         console.warn("[skip] '%s' exists", serverJs); | 
					
						
							|  |  |  |         return; | 
					
						
							| 
									
										
										
										
											2019-11-03 02:51:32 -07:00
										 |  |  |     } catch (e) { | 
					
						
							|  |  |  |         // continue
 | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (flags.cluster) { | 
					
						
							|  |  |  |         tmpl = tmpl.replace( | 
					
						
							|  |  |  |             /options.cluster = false/g, | 
					
						
							|  |  |  |             'options.cluster = true' | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if (flags.maintainerEmail) { | 
					
						
							|  |  |  |         tmpl = tmpl.replace( | 
					
						
							|  |  |  |             /pkg.author/g, | 
					
						
							|  |  |  |             JSON.stringify(flags.maintainerEmail) | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     fs.writeFileSync(path.join(pkgdir, serverJs), tmpl); | 
					
						
							| 
									
										
										
										
											2019-11-05 00:01:31 -07:00
										 |  |  |     console.info("created '%s'", serverJs); | 
					
						
							| 
									
										
										
										
											2019-11-03 02:51:32 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function writeAppJs(pkgdir) { | 
					
						
							|  |  |  |     var appJs = 'app.js'; | 
					
						
							|  |  |  |     var fs = require('fs'); | 
					
						
							|  |  |  |     var path = require('path'); | 
					
						
							|  |  |  |     var tmpl = fs.readFileSync( | 
					
						
							|  |  |  |         path.join(__dirname, 'tmpl/app.tmpl.js'), | 
					
						
							|  |  |  |         'utf8' | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     try { | 
					
						
							|  |  |  |         fs.accessSync(path.join(pkgdir, appJs)); | 
					
						
							| 
									
										
										
										
											2019-11-05 00:01:31 -07:00
										 |  |  |         console.warn("[skip] '%s' exists", appJs); | 
					
						
							|  |  |  |         return; | 
					
						
							| 
									
										
										
										
											2019-11-03 02:51:32 -07:00
										 |  |  |     } catch (e) { | 
					
						
							| 
									
										
										
										
											2019-11-05 00:01:31 -07:00
										 |  |  |         fs.writeFileSync(path.join(pkgdir, appJs), tmpl); | 
					
						
							|  |  |  |         console.info("created '%s'", appJs); | 
					
						
							| 
									
										
										
										
											2019-11-03 02:51:32 -07:00
										 |  |  |     } | 
					
						
							|  |  |  | } |