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);
|
|
}
|
|
}
|