From e420bf6a8be4efdfa2ae47827192366280f77a62 Mon Sep 17 00:00:00 2001 From: Mitchell Wright Date: Thu, 15 Aug 2019 17:33:46 -0400 Subject: [PATCH 1/4] Fix for remote repo SNAPSHOT download Added way for the latest SNAPSHOT dependency to be resolved in remote repos that version them with timestamps Added progress bar --- index.js | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/index.js b/index.js index 4467f94..48bb07a 100644 --- a/index.js +++ b/index.js @@ -39,6 +39,16 @@ module.exports = function(/*options, callback*/) { var dependencyQueue = async.queue(processDependency, options.concurrency); dependencyQueue.drain = complete; + const _cliProgress = require('cli-progress'); + const progressBar = new _cliProgress.SingleBar({ + format: 'Java Dependencies Loading [{bar}] {percentage}% || {value}/{total}', + barCompleteChar: '\u2588', + barIncompleteChar: '\u2591', + hideCursor: true, + clearOnComplete: false, + stopOnComplete: false + }); + return go(callback); /***************************************************************************************/ @@ -49,6 +59,7 @@ module.exports = function(/*options, callback*/) { return callback(err); } + progressBar.start(packageJson.java.totalDependencies != null ? packageJson.java.totalDependencies : 100, 0); if (packageJson.java.repositories) { options.repositories = options.repositories.concat(packageJson.java.repositories); } @@ -69,12 +80,11 @@ module.exports = function(/*options, callback*/) { } } - - return packageJson.java.dependencies.forEach(function(d) { dependencyQueuePush(Dependency.createFromObject(d, 'package.json')); }); }); + progressBar.stop(); } function complete() { @@ -99,6 +109,7 @@ module.exports = function(/*options, callback*/) { dependencyArray = [dependency]; } dependencyArray.forEach(function(d) { + progressBar.increment() d.state = 'queued'; if (!d.groupId) { @@ -207,7 +218,12 @@ module.exports = function(/*options, callback*/) { }); function download(dependency, pomPath, callback) { - return downloadFile(dependency.getPomPath(), pomPath, dependency.reason, function(err, url) { + var dependencyPomPath = dependency.pomPath != null ? dependency.pomPath : dependency.getPomPath(); + if (dependencyPomPath.endsWith('-SNAPSHOT.pom')) { + dependencyPomPath = dependencyPomPath.substring(0, dependencyPomPath.lastIndexOf('/') + 1) + 'maven-metadata.xml'; + pomPath = pomPath.substring(0, pomPath.lastIndexOf(path.sep) + 1) + 'maven-metadata.xml'; + } + return downloadFile(dependencyPomPath, pomPath, dependency.reason, function(err, url) { if (err) { return callback(err); } @@ -222,15 +238,21 @@ module.exports = function(/*options, callback*/) { if (err) { return callback(err); } - return loadFile(dependency, data, callback); + return loadFile(dependency, pomPath, data, callback); }); } - function loadFile(dependency, data, callback) { + function loadFile(dependency, pomPath, data, callback) { xml2js.parseString(data, function(err, xml) { if (err) { return callback(err); } + if (dependency.pomPath.endsWith('maven-metadata.xml')) { + var snapshotVersion = xml.metadata.artifactId + '-' + xml.metadata.versioning["0"].snapshotVersions["0"].snapshotVersion["0"].value["0"]; + dependency.pomPath = dependency.getPomPath().substring(0, dependency.getPomPath().lastIndexOf('/') + 1) + snapshotVersion + '.pom'; + pomPath = pomPath.substring(0, pomPath.lastIndexOf(path.sep) + 1) + snapshotVersion + '.pom'; + return download(dependency, pomPath, callback); + } dependency.pomXml = xml; if (dependency.getParent()) { var parentDep = dependency.getParent(); @@ -255,7 +277,12 @@ module.exports = function(/*options, callback*/) { dependency.jarPath = jarPath; return callback(); } else { - return downloadFile(dependency.getJarPath(), jarPath, dependency.reason, function(err, url) { + var dependencyJarPath = dependency.getJarPath(); + if (dependency.version.endsWith('-SNAPSHOT')) { + var snapshotVersion = dependency.pomUrl.substring(dependency.pomUrl.lastIndexOf('/') + 1, dependency.pomUrl.lastIndexOf('.')); + dependencyJarPath = dependencyJarPath.substring(0, dependencyJarPath.lastIndexOf('/') + 1) + snapshotVersion + '.jar'; + } + return downloadFile(dependencyJarPath, jarPath, dependency.reason, function(err, url) { if (err) { return callback(err); } From 2a08f55d7014f4952d53e56c7edaeb674fdeab63 Mon Sep 17 00:00:00 2001 From: Mitchell Wright Date: Thu, 15 Aug 2019 17:38:29 -0400 Subject: [PATCH 2/4] added cli-progress dependency for progress bar --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 00e78d8..a5663d4 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,8 @@ "async": "^0.9.0", "mkdirp": "^0.5.0", "request": "^2.37.0", - "xml2js": "^0.4.4" + "xml2js": "^0.4.4", + "cli-progress": "^3.0.0", }, "devDependencies": { "fs-extra": "^0.26.2", From 38122432f974f26de1d687fc8f92c0838ee6416d Mon Sep 17 00:00:00 2001 From: "Wright, Mitchell" Date: Thu, 15 Aug 2019 18:31:28 -0400 Subject: [PATCH 3/4] fixed syntax issue in index.js, corrected download filename of SNAPSHOT pom --- index.js | 7 +++---- package.json | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/index.js b/index.js index 48bb07a..c65bb69 100644 --- a/index.js +++ b/index.js @@ -238,11 +238,11 @@ module.exports = function(/*options, callback*/) { if (err) { return callback(err); } - return loadFile(dependency, pomPath, data, callback); + return loadFile(dependency, data, callback); }); } - function loadFile(dependency, pomPath, data, callback) { + function loadFile(dependency, data, callback) { xml2js.parseString(data, function(err, xml) { if (err) { return callback(err); @@ -250,8 +250,7 @@ module.exports = function(/*options, callback*/) { if (dependency.pomPath.endsWith('maven-metadata.xml')) { var snapshotVersion = xml.metadata.artifactId + '-' + xml.metadata.versioning["0"].snapshotVersions["0"].snapshotVersion["0"].value["0"]; dependency.pomPath = dependency.getPomPath().substring(0, dependency.getPomPath().lastIndexOf('/') + 1) + snapshotVersion + '.pom'; - pomPath = pomPath.substring(0, pomPath.lastIndexOf(path.sep) + 1) + snapshotVersion + '.pom'; - return download(dependency, pomPath, callback); + return download(dependency, path.resolve(options.localRepository, dependency.getPomPath()), callback); } dependency.pomXml = xml; if (dependency.getParent()) { diff --git a/package.json b/package.json index a5663d4..86c1bd4 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "mkdirp": "^0.5.0", "request": "^2.37.0", "xml2js": "^0.4.4", - "cli-progress": "^3.0.0", + "cli-progress": "^3.0.0" }, "devDependencies": { "fs-extra": "^0.26.2", From 621fb19784805602f06ed00e326b5cd23315f358 Mon Sep 17 00:00:00 2001 From: "Wright, Mitchell" Date: Thu, 15 Aug 2019 18:36:46 -0400 Subject: [PATCH 4/4] used var instead of const to pass build --- index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index c65bb69..690cb06 100644 --- a/index.js +++ b/index.js @@ -39,8 +39,8 @@ module.exports = function(/*options, callback*/) { var dependencyQueue = async.queue(processDependency, options.concurrency); dependencyQueue.drain = complete; - const _cliProgress = require('cli-progress'); - const progressBar = new _cliProgress.SingleBar({ + var _cliProgress = require('cli-progress'); + var progressBar = new _cliProgress.SingleBar({ format: 'Java Dependencies Loading [{bar}] {percentage}% || {value}/{total}', barCompleteChar: '\u2588', barIncompleteChar: '\u2591',