UNPKG

jmms

Version:

Jmms cli tools, Jmms is a java meta-micro-service framework

86 lines (69 loc) 2.01 kB
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); } };