jmms
Version:
Jmms cli tools, Jmms is a java meta-micro-service framework
86 lines (69 loc) • 2.01 kB
JavaScript
const _ = require('lodash');
const log = require('../log');
const child = require("child_process")
const path = require('path')
const shelljs = require('shelljs');
var BaseGenerator = require('../base');
module.exports = class extends BaseGenerator {
constructor(args, opts) {
super(args, opts, false);
}
run() {
var ide = this.options['ide'];
if(!ide) {
ide = 'vscode';
}
if(ide == 'idea') {
this._idea();
return;
}
if(ide == 'vscode') {
this._vscode();
return;
}
log.error("Unsupported ide '" + ide + "'");
process.exit(1);
}
_idea() {
const files = shelljs.find('.').filter(function(file) {
return file.match(/\.iml$/);
});
const created = !_.isEmpty(files);
const project = created ? process.cwd() : path.join(process.cwd(), './pom.xml');
if(process.platform == "darwin") {
this._exec("open", ["-a", "/Applications/IntelliJ IDEA.app/Contents/MacOS/idea", "--args", project]);
return;
}
/* error
if(/win/.test(process.platform)) {
this._exec("IntelliJ IDEA.exe", [project]);
return;
}
*/
log.error("Platform '" + process.platform + "' not supported!");
process.exit(1);
}
_vscode() {
const dir = process.cwd();
if(process.platform == "darwin") {
this._exec("open", ["-n", "-b", "com.microsoft.VSCode", "--args", dir])
return;
}
/* error
if(/win/.test(process.platform)) {
if(!shelljs.which('code')) {
log.error('Vscode command \'code\' not found, is vscode installed?');
process.exit(1);
}
this._exec("code",[dir]);
return;
}
*/
log.error("Platform '" + process.platform + "' not supported!");
process.exit(1);
}
_exec(cmd, args) {
log.exec(cmd, args);
child.spawn(cmd, args);
}
};