env.splitPath = function(pathvalue) { if (!pathvalue) return []; else { var paths = pathvalue.split(path.delimiter); return yuan.array.excludeOn(paths, function(item) { return item.match(/\s*/); }); } };
getPIDs: function(OPT) { var PIDs = []; var cmdline = yuan.string.format('netstat -ano | findstr :%s', OPT.port); try { var output = child_process.execSync(cmdline); var lines = output.toString().split('\r\n'); lines.forEach(function(line) { if (line == '') return; var parts = line.trim().split(/\s+/); if (yuan.string.endsWith(parts[1], ':' + OPT.port)) { PIDs.push(parts[4]); } }); } catch (ex) { // 如果命令输出为空,execSync 将抛出 checkExecSyncError 错误。 // 这是 NodeJS 的特点,与操作系统无关。 } return yuan.array.uniq(PIDs); },
java.init = yuan.fn.once(function() { if (!java.isReady()) { var envs = {}; // Apple Mac OS X if (core.isOS('mac')) { // What to do ? e.g. // JAVA_HOME=Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home var ready = false; if (!ready) { var pathname = '/Library/Java/JavaVirtualMachines/'; if (fs.existsSync(pathname)) { var reJDK = /^jdk[\d\._]+\.jdk$/; yuan.array.untilOn(fs.readdirSync(pathname), function(name) { var homepath = path.join(pathname, name, 'Contents', 'Home'); if (reJDK.test(name) && fs.existsSync(homepath)) { envs.JAVA_HOME = homepath; return ready = true; } }); } } if (!ready) { var pathname = '/Library/Java/Home'; if (fs.existsSync(pathname)) { envs.JAVA_HOME = pathname; ready = true; } } if (!ready) { var pathname = '/System/Library/Frameworks/JavaVM.framework/Home'; if (fs.existsSync(pathname)) { evns.JAVA_HOME = pathname; ready = true; } } } // Microsoft Windows else if (core.isOS('windows')) { // What to do ? e.g. // JAVA_HOME=c:\Program Files (x86)\Java\jre7\ var env = process.env, ready = false; if (!ready) { var pathname = core.ifNotExists( env['ProgramFiles(x86)'] , path.join(env['SystemDrive'], 'Program Files (x86)') , path.join(env['SystemDrive'], 'Program Files') ); if (pathname) pathname = path.join(pathname, 'Java'); if (pathname && fs.existsSync(pathname)) { var items = fs.readdirSync(pathname); var reJre = /^jre(\d+)$/; for (var i = 0, item; item = items[i]; i++) { if (reJre.test(item)) { // version = RegExp.$1; envs.JAVA_HOME = path.join(pathname, item); break; } } } } } yuan.object.extendOwn(process.env, envs); } return java.isReady(); });