mirror of
				https://github.com/therootcompany/greenlock.js.git
				synced 2024-11-16 17:29:00 +00:00 
			
		
		
		
	
		
			
	
	
		
			136 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			136 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | '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 configFile = path.join(pkgdir, 'greenlock.d/manager.json'); | ||
|  |     var manager = flags.manager; | ||
|  | 
 | ||
|  |     // TODO move to bin/lib/greenlockrc.js
 | ||
|  |     if (!manager) { | ||
|  |         manager = 'greenlock-cloud-fs'; | ||
|  |         if (!flags.managerOpts.configFile) { | ||
|  |             flags.managerOpts.configFile = configFile; | ||
|  |         } | ||
|  |     } | ||
|  |     if (['fs', 'cloud'].includes(manager)) { | ||
|  |         // TODO publish the 1st party modules under a secure namespace
 | ||
|  |         flags.manager = '@greenlock/manager-' + flags.manager; | ||
|  |     } | ||
|  |     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); | ||
|  |     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); | ||
|  | 
 | ||
|  | function writeServerJs(pkgdir, flags) { | ||
|  |     var serverJs = 'server.js'; | ||
|  |     var bakTmpl = 'server-greenlock-tmpl.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)); | ||
|  |         console.warn( | ||
|  |             JSON.stringify(serverJs), | ||
|  |             ' exists, writing to ', | ||
|  |             JSON.stringify(bakTmpl), | ||
|  |             'instead' | ||
|  |         ); | ||
|  |         serverJs = bakTmpl; | ||
|  |     } 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); | ||
|  | } | ||
|  | 
 | ||
|  | function writeAppJs(pkgdir) { | ||
|  |     var bakTmpl = 'app-greenlock-tmpl.js'; | ||
|  |     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)); | ||
|  |         console.warn( | ||
|  |             JSON.stringify(appJs), | ||
|  |             ' exists, writing to ', | ||
|  |             JSON.stringify(bakTmpl), | ||
|  |             'instead' | ||
|  |         ); | ||
|  |         appJs = bakTmpl; | ||
|  |     } catch (e) { | ||
|  |         // continue
 | ||
|  |     } | ||
|  | 
 | ||
|  |     fs.writeFileSync(path.join(pkgdir, appJs), tmpl); | ||
|  | } |