mirror of
				https://github.com/therootcompany/greenlock.js.git
				synced 2024-11-16 17:29:00 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			163 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			163 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 Greenlock = require('../');
 | 
						|
 | 
						|
var Flags = require('./lib/flags.js');
 | 
						|
 | 
						|
var flagOptions = Flags.flags();
 | 
						|
var myFlags = {};
 | 
						|
[
 | 
						|
    'config-dir',
 | 
						|
    'maintainer-email',
 | 
						|
    'cluster',
 | 
						|
    'manager',
 | 
						|
    'manager-xxxx'
 | 
						|
].forEach(function(k) {
 | 
						|
    myFlags[k] = flagOptions[k];
 | 
						|
});
 | 
						|
 | 
						|
cli.parse(myFlags);
 | 
						|
cli.main(async function(argList, flags) {
 | 
						|
    var pkgRoot = process.cwd();
 | 
						|
    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.module = manager;
 | 
						|
 | 
						|
    try {
 | 
						|
        if ('.' === String(manager)[0]) {
 | 
						|
            manager = require('path').resolve(pkgRoot, manager);
 | 
						|
        }
 | 
						|
        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 greenlock = Greenlock.create({
 | 
						|
        packageRoot: pkgRoot,
 | 
						|
        manager: flags.manager,
 | 
						|
        configDir: flags.configDir,
 | 
						|
        maintainerEmail: flags.maintainerEmail,
 | 
						|
        _mustPackage: true
 | 
						|
    });
 | 
						|
    await greenlock.manager.defaults();
 | 
						|
 | 
						|
    //writeGreenlockJs(pkgdir, flags);
 | 
						|
    writeServerJs(pkgRoot, flags);
 | 
						|
    writeAppJs(pkgRoot);
 | 
						|
 | 
						|
    /*
 | 
						|
    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.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;
 | 
						|
 | 
						|
    try {
 | 
						|
        fs.accessSync(path.join(pkgdir, serverJs));
 | 
						|
        console.warn("[skip] '%s' exists", serverJs);
 | 
						|
        return;
 | 
						|
    } catch (e) {
 | 
						|
        // continue
 | 
						|
    }
 | 
						|
 | 
						|
    if (flags.cluster) {
 | 
						|
        tmpl = fs.readFileSync(
 | 
						|
            path.join(__dirname, 'tmpl/cluster.tmpl.js'),
 | 
						|
            'utf8'
 | 
						|
        );
 | 
						|
        tmpl = tmpl.replace(/cluster: false/g, 'cluster: true');
 | 
						|
    } else {
 | 
						|
        tmpl = fs.readFileSync(
 | 
						|
            path.join(__dirname, 'tmpl/server.tmpl.js'),
 | 
						|
            'utf8'
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    if (flags.maintainerEmail) {
 | 
						|
        tmpl = tmpl
 | 
						|
            .replace(/pkg.author/g, JSON.stringify(flags.maintainerEmail))
 | 
						|
            .replace(/\/\/maintainerEmail/g, '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);
 | 
						|
    }
 | 
						|
}
 |