Skip to content

Commit 836d99d

Browse files
authored
Add version check for nuget external packages (#19852)
1 parent 96f374d commit 836d99d

File tree

3 files changed

+57
-11
lines changed

3 files changed

+57
-11
lines changed

make-util.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -698,6 +698,20 @@ var getExternalsAsync = async function (externals, destRoot) {
698698
var url = package.repository.replace(/\/$/, '') + '/package/' + package.name + '/' + package.version;
699699
var packageSource = await downloadArchiveAsync(url, /*omitExtensionCheck*/true);
700700

701+
// If nuget doesn't find specific package version, it will download the latest.
702+
// We can't specify nuget to fail such request, so we need at least to check version post-factum.
703+
const { XMLParser } = require("fast-xml-parser");
704+
const parser = new XMLParser();
705+
706+
const nuspecPath = path.join(packageSource, package.name + '.nuspec');
707+
const nuspecXml = fs.readFileSync(nuspecPath);
708+
const nuspec = parser.parse(nuspecXml);
709+
710+
const nuspecVersion = nuspec && nuspec.package && nuspec.package.metadata && nuspec.package.metadata.version;
711+
if (nuspecVersion !== package.version) {
712+
fail(`Expected version '${package.version}' but got '${nuspecVersion}' for nuget package '${package.name}'`);
713+
}
714+
701715
// copy specific files
702716
copyGroups(package.cp, packageSource, destRoot);
703717
}

package-lock.json

Lines changed: 42 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
"devDependencies": {
3434
"adm-zip": "0.4.13",
3535
"azure-devops-node-api": "^12.2.0",
36+
"fast-xml-parser": "^4.3.6",
3637
"js-yaml": "^3.13.1",
3738
"minimatch": "3.0.2",
3839
"minimist": "^1.2.8",

0 commit comments

Comments
 (0)