mirror of
				https://github.com/therootcompany/greenlock.js.git
				synced 2024-11-16 17:29:00 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			153 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			4.0 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 manager = flags.manager;
 | |
| 
 | |
|     if (['fs', 'cloud'].includes(manager)) {
 | |
|         manager = '@greenlock/manager';
 | |
|     }
 | |
|     if (['cloud'].includes(manager)) {
 | |
|         flags.managerOpts.cloud = true;
 | |
|     }
 | |
| 
 | |
|     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);
 | |
|     writeGreenlockJs(pkgdir, flags);
 | |
|     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 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);
 | |
| }
 | |
| 
 | |
| 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));
 | |
|         console.warn("[skip] '%s' exists", serverJs);
 | |
|         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, serverJs), tmpl);
 | |
|     console.info("created '%s'", serverJs);
 | |
| }
 | |
| 
 | |
| 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));
 | |
|         console.warn("[skip] '%s' exists", appJs);
 | |
|         return;
 | |
|     } catch (e) {
 | |
|         fs.writeFileSync(path.join(pkgdir, appJs), tmpl);
 | |
|         console.info("created '%s'", appJs);
 | |
|     }
 | |
| }
 |