jmms
Version:
Jmms cli tools, Jmms is a java meta-micro-service framework
100 lines (95 loc) • 3.82 kB
JavaScript
const log = require('../log');
const fs = require('fs');
const jszip = require("jszip/lib");
const mvn = require('maven').create();
const shelljs = require('shelljs');
const tmp = require('tmp');
const cheerio = require('cheerio')
const BaseGenerator = require('../base');
let removeDependencyFromPomFile = (pomFile, groupId, artifactId, version) => {
return new Promise((resolve, reject) => {
fs.exists(pomFile, (exists) => {
if (exists) {
fs.readFile(pomFile, "utf-8", (err, xml) => {
if (err) {
reject(err);
} else {
let $ = cheerio.load(xml, { xmlMode: true });
let project = $("project");
if (project.length == 1) {
let dependencies = project.find("> dependencies");
if (dependencies.length > 0) {
let dependency = null;
dependencies.find("> dependency").each((index, it) => {
if ($(it).find("> groupId").text() == groupId && $(it).find("> artifactId").text() == artifactId) {
dependency = $(it);
}
});
if (dependency) {
dependency.remove();
}
}
let xmlString = project.toString();
if (xmlString) {
fs.writeFile(pomFile, xmlString, (err) => {
if (err) {
reject(err);
} else {
resolve();
}
});
}
}
}
});
} else {
resolve();
}
});
});
}
module.exports = class extends BaseGenerator {
constructor(args, opts) {
super(args, opts);
}
prompting () {
let packageName = this.args[0];
let npmRemoveAndExit = () => {
let cli = "npm remove " + packageName;
if (this.options.save) {
cli = cli.concat(" --save");
}
if (shelljs.exec(cli).code !== 0) {
process.exit(1);
} else {
process.exit(0);
}
}
let pomFile = "./node_modules/" + packageName + "/pom.xml";
if (fs.existsSync(pomFile)) {
let groupId = null;
let artifactId = null;
let version = null;
fs.readFile(pomFile, "utf-8", (err, xml) => {
if (err) {
log.error(err);
} else {
let $ = cheerio.load(xml);
groupId = $("project > groupId").text();
artifactId = $("project > artifactId").text();
version = $("project > version").text();
if (groupId && artifactId && version) {
removeDependencyFromPomFile("./pom.xml", groupId, artifactId, version).catch(err => {
log.error("Failed remove dependency from pom.xml file.");
npmRemoveAndExit();
}).then(() => {
npmRemoveAndExit();
});
}
}
});
} else {
npmRemoveAndExit(packageName);
}
}
}