knuddels-local
Version:
Local development environment for UserApps
89 lines (75 loc) • 2.14 kB
JavaScript
const yargs = require('yargs');
const OS = require('os');
const Path = require('path');
const Execute = require('child_process').exec;
const Paths = {
Emulator: __dirname,
Home: OS.homedir(),
Knuddels: Path.join(OS.homedir(), 'Knuddels-Stapp'),
Java: Path.join(OS.homedir(), 'Knuddels-Stapp', 'CommonFiles', 'Java', 'bin'),
Applet: Path.join(OS.homedir(), 'Knuddels-Stapp', 'bin'),
};
yargs.scriptName('knuddels');
yargs.usage(`knuddels local development environment v${require("../package.json").version}
Usage: knuddels <command> [options]
For more information, see https://developer.knuddels.de/.`);
yargs.options({
/*verbose: {
type: 'boolean',
describe: 'Show more details'
},*/
type: {
type: 'string',
choices: [
'jx',
'jfx',
'browser'
],
describe: 'Select preset'
}
});
yargs.alias('t', 'type');
yargs.alias('h', 'help');
yargs.alias('v', 'version');
yargs.parse(process.argv.slice(2), (error, argv, output) => {
if(error && output) {
console.error(output);
process.exitCode = 1;
return;
}
if(output) {
console.log(output);
return;
}
if(argv._.length == 0) {
console.log(yargs.getUsageInstance().help());
return;
}
let options = {
type: argv.type || 'jfx',
verbose: argv.verbose || false
};
if(argv._.indexOf('run') > -1) {
let command;
switch(options.type) {
case 'browser':
command = (process.platform == 'darwin'? 'open': process.platform == 'win32'? 'start': 'xdg-open') + ' http://localhost:2717';
break;
case 'jfx':
command = Path.join(Paths.Java, 'java.exe') + ' -jar ' + Path.join(Paths.Emulator, 'emulator.jar');
break;
case 'jx':
command = Path.join(Paths.Java, 'java.exe') + ' -jar ' + Path.join(Paths.Emulator, 'emulator.jar');
break;
}
var child = Execute(command, function (error, output, errors) {
console.log('Output -> ' + output);
if(error !== null){
console.log("Error -> "+errors, error);
}
});
} else {
console.log(yargs.getUsageInstance().help());
}
});