UNPKG

jmms

Version:

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

100 lines (95 loc) 3.82 kB
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); } } }