From 2f6626769432cc316d5652e1de372fd0b32a2454 Mon Sep 17 00:00:00 2001 From: Karishma Ghiya Date: Fri, 8 Nov 2019 14:50:25 -0800 Subject: [PATCH 01/13] testing --- eng/tools/versioning/set-dev.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eng/tools/versioning/set-dev.js b/eng/tools/versioning/set-dev.js index d6699c2abf08..1280c29dede4 100644 --- a/eng/tools/versioning/set-dev.js +++ b/eng/tools/versioning/set-dev.js @@ -60,10 +60,11 @@ async function main(argv) { ); const newVersion = getDevVersion(packageJsonContents.version, buildId); console.log(`File ${targetPackageJson} version updated to ${newVersion}`); - const updatedPackageSpec = { + var updatedPackageSpec = { ...packageJsonContents, version: newVersion }; + await versionUtils.writePackageJson(targetPackageJson, updatedPackageSpec); await versionUtils.updatePackageConstants( From a235f4e78c2567afad8f6fe4c6cb8dc8b8c8535d Mon Sep 17 00:00:00 2001 From: Karishma Ghiya Date: Fri, 8 Nov 2019 17:43:51 -0800 Subject: [PATCH 02/13] everything is confusing --- eng/tools/versioning/set-dev-dependencies.js | 106 +++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 eng/tools/versioning/set-dev-dependencies.js diff --git a/eng/tools/versioning/set-dev-dependencies.js b/eng/tools/versioning/set-dev-dependencies.js new file mode 100644 index 000000000000..70eeb73dc703 --- /dev/null +++ b/eng/tools/versioning/set-dev-dependencies.js @@ -0,0 +1,106 @@ +let argv = require("yargs") + .options({ + "build-id": { + type: "string", + describe: "build ID suffix to give the package (e.g. usually YYYYMMDD.r)", + demandOption: true + }, + "repo-root": { + type: "string", + default: "../../../", + describe: "root of the repository (e.g. ../../../)", + demandOption: true + }, + service: { + type: "string", + describe: + "service directory whose packages should be updated (if not set updates all directories)" + } + }) + .help().argv; + +const path = require("path"); +const semver = require("semver"); +const versionUtils = require("./VersionUtils"); + +function getDevVersion(currentVersion, buildId) { + const parsedVersion = semver.parse(currentVersion); + return `${parsedVersion.major}.${parsedVersion.minor}.${parsedVersion.patch}-dev.${buildId}`; + + +const getRushPackages = async (rushPath) => { + const baseDir = path.dirname(rushPath); + const rushJson = parse(await readFile(rushPath, "utf8")); + const packageData = {}; + + for (const proj of rushJson.projects) { + const filePath = path.join(baseDir, proj.projectFolder, "package.json"); + const packageJson = parse(await readFile(filePath, "utf8")); + packageData[packageJson.name] = { + src: filePath, + json: packageJson, + newVer: undefined + }; + } + + return packageData; +}; + + +async function main(argv) { + const buildId = argv["build-id"]; + const repoRoot = argv["repo-root"]; + const service = argv["service"]; + + var rushSpec = await versionUtils.getRushSpec(repoRoot); + + console.log(`Updating packages with Build ID ${buildId}`); + + const scopedPackages = rushSpec.projects.filter(package => + service ? package.projectFolder.startsWith(`sdk/${service}`) : true + ); + + let appropriateVersionedPackages = scopedPackages.filter( + package => + package.versionPolicyName == "core" || + package.versionPolicyName == "client" + ); + + console.log(appropriateVersionedPackages); + + let targetPackages = appropriateVersionedPackages.map(project => + path.resolve(path.join(repoRoot, project.projectFolder)) + ); + + const packageData = {}; + + for (const targetFolder of targetPackages) { + const targetPackageJson = path.join(targetFolder, "package.json"); + const packageJsonContents = await versionUtils.readFileJson( + targetPackageJson + ); + + packageData[packageJson.name] = { + src: targetPackageJson, + json: packageJsonContents, + newVer: undefined + }; + + const newVersion = getDevVersion(packageJsonContents.version, buildId); + console.log(`File ${targetPackageJson} version updated to ${newVersion}`); + var updatedPackageSpec = { + ...packageJsonContents, + version: newVersion + }; + + await versionUtils.writePackageJson(targetPackageJson, updatedPackageSpec); + + await versionUtils.updatePackageConstants( + targetFolder, + packageJsonContents, + newVersion + ); + } +} + +main(argv); From 37435f8973dec78d4a02cc77e2ccc868e8e0141c Mon Sep 17 00:00:00 2001 From: Karishma Ghiya Date: Tue, 12 Nov 2019 12:04:39 -0800 Subject: [PATCH 03/13] versioning updating dependencies --- eng/tools/versioning/VersionUtils.js | 23 +++ eng/tools/versioning/set-dev-dependencies.js | 154 +++++++++++-------- 2 files changed, 113 insertions(+), 64 deletions(-) diff --git a/eng/tools/versioning/VersionUtils.js b/eng/tools/versioning/VersionUtils.js index f6cf7a0a33e8..5fec19c65fef 100644 --- a/eng/tools/versioning/VersionUtils.js +++ b/eng/tools/versioning/VersionUtils.js @@ -33,6 +33,28 @@ async function writePackageJson(filename, contentObject) { } } +//This gets the list of rush packages as well as their packageJsons +//This is specifically used in set-dev-dependencies script +const getRushPackageJsons = async repoRoot => { + const rushPath = path.resolve(path.join(repoRoot, "rush.json")); + const baseDir = path.dirname(rushPath); + const rushJson = parse(await readFile(rushPath, "utf8")); + const packageData = {}; + + for (const proj of rushJson.projects) { + const filePath = path.join(baseDir, proj.projectFolder, "package.json"); + const packageJson = parse(await readFile(filePath, "utf8")); + packageData[packageJson.name] = { + src: filePath, + json: packageJson, + versionPolicy: proj.versionPolicyName, + projectFolder: proj.projectFolder, + newVer: undefined + }; + } + return packageData; +}; + async function getRushSpec(repoRoot) { const rushPath = path.resolve(path.join(repoRoot, "rush.json")); return await readFileJson(rushPath); @@ -80,3 +102,4 @@ module.exports.writeFile = writeFile; module.exports.writePackageJson = writePackageJson; module.exports.getRushSpec = getRushSpec; module.exports.updatePackageConstants = updatePackageConstants; +module.exports.getRushPackageJsons = getRushPackageJsons; diff --git a/eng/tools/versioning/set-dev-dependencies.js b/eng/tools/versioning/set-dev-dependencies.js index 70eeb73dc703..7342cec255f0 100644 --- a/eng/tools/versioning/set-dev-dependencies.js +++ b/eng/tools/versioning/set-dev-dependencies.js @@ -23,84 +23,110 @@ const path = require("path"); const semver = require("semver"); const versionUtils = require("./VersionUtils"); -function getDevVersion(currentVersion, buildId) { - const parsedVersion = semver.parse(currentVersion); - return `${parsedVersion.major}.${parsedVersion.minor}.${parsedVersion.patch}-dev.${buildId}`; - - -const getRushPackages = async (rushPath) => { - const baseDir = path.dirname(rushPath); - const rushJson = parse(await readFile(rushPath, "utf8")); - const packageData = {}; - - for (const proj of rushJson.projects) { - const filePath = path.join(baseDir, proj.projectFolder, "package.json"); - const packageJson = parse(await readFile(filePath, "utf8")); - packageData[packageJson.name] = { - src: filePath, - json: packageJson, - newVer: undefined - }; +const commitChanges = async (rushPackages, package) => { + // Commit the new version to the JSON document + if(rushPackages[package].newVer){ + rushPackages[package].json.version = rushPackages[package].newVer; + } + try { + // Write out the JSON document to disk + await versionUtils.writePackageJson( + rushPackages[package].src, + rushPackages[package].json + ); + console.info( + "File " + + rushPackages[package].src + + " created successfully with Node.js v10 fs/promises!" + ); + } catch (e) { + console.error(e); } +}; - return packageData; +const updatePackageVersion = (rushPackages, package, buildId) => { + const currentVersion = rushPackages[package].json.version; + const parsedVersion = semver.parse(currentVersion); + rushPackages[package].newVer = `${parsedVersion.major}.${parsedVersion.minor}.${parsedVersion.patch}-dev.${buildId}`; + console.log(`version updated for ${package}`); + return rushPackages; }; +const updateDependencySection = (rushPackages, dependencySection) => { + console.log(dependencySection); + if(dependencySection){ + for (const [depName, depVersionRange] of Object.entries(dependencySection)) { + console.log(`checking ${depName}:${depVersionRange}...`); + + // If the dependency isn't part of the Rush workspace, skip it + if (!rushPackages[depName]) { + continue; + } + + // Compare the dependency version range with the package's current version + const packageVersion = rushPackages[depName].json.version; + + console.log(`version in package's dep = ${depVersionRange}`); + console.log(`dep's version = ${packageVersion}`); + + // If the dependency range is satisfied by the package's current version, + // replace it with an exact match to the package's new version + if (semver.satisfies(packageVersion, depVersionRange)) { + // Commit the dependency version to the JSON document + if(rushPackages[depName].newVer !== undefined){ + dependencySection[depName] = rushPackages[depName].newVer; + } + } + } + } + return rushPackages; +}; -async function main(argv) { - const buildId = argv["build-id"]; - const repoRoot = argv["repo-root"]; - const service = argv["service"]; +const updateInternalDependencyVersions = (rushPackages, package) => { + console.log(package); + console.log("checking dependencies .."); + rushPackages = updateDependencySection(rushPackages,rushPackages[package].json.dependencies); - var rushSpec = await versionUtils.getRushSpec(repoRoot); + console.log("checking devDependencies .."); + rushPackages = updateDependencySection(rushPackages,rushPackages[package].json.devDependencies); - console.log(`Updating packages with Build ID ${buildId}`); + console.log("checking peerDependencies .."); + rushPackages = updateDependencySection(rushPackages,rushPackages[package].json.peerDependencies); - const scopedPackages = rushSpec.projects.filter(package => - service ? package.projectFolder.startsWith(`sdk/${service}`) : true - ); + return rushPackages; +}; - let appropriateVersionedPackages = scopedPackages.filter( - package => - package.versionPolicyName == "core" || - package.versionPolicyName == "client" - ); - console.log(appropriateVersionedPackages); +async function main(argv) { + const buildId = argv["build-id"]; + const repoRoot = argv["repo-root"]; + const service = argv["service"]; - let targetPackages = appropriateVersionedPackages.map(project => - path.resolve(path.join(repoRoot, project.projectFolder)) - ); + var rushPackages = await versionUtils.getRushPackageJsons(repoRoot); - const packageData = {}; + // Set all the new versions + console.log(`Updating packages with build ID ${buildId}`); + for (const package of Object.keys(rushPackages)) { + if ((rushPackages[package].versionPolicy == "client"||rushPackages[package].versionPolicy == "core") && (rushPackages[package].projectFolder.startsWith(`sdk/${service}`))){ + console.log("package updated = "); + console.log(package); + rushPackages = updatePackageVersion(rushPackages, package, buildId); + console.log(rushPackages[package].newVer); + } + }; - for (const targetFolder of targetPackages) { - const targetPackageJson = path.join(targetFolder, "package.json"); - const packageJsonContents = await versionUtils.readFileJson( - targetPackageJson - ); + // Update any references to internal projects with the new versions + for (const package of Object.keys(rushPackages)) { + if ((rushPackages[package].versionPolicy == "client"||rushPackages[package].versionPolicy == "core")){ + rushPackages = updateInternalDependencyVersions(rushPackages, package); + } + } - packageData[packageJson.name] = { - src: targetPackageJson, - json: packageJsonContents, - newVer: undefined - }; - - const newVersion = getDevVersion(packageJsonContents.version, buildId); - console.log(`File ${targetPackageJson} version updated to ${newVersion}`); - var updatedPackageSpec = { - ...packageJsonContents, - version: newVersion - }; - - await versionUtils.writePackageJson(targetPackageJson, updatedPackageSpec); - - await versionUtils.updatePackageConstants( - targetFolder, - packageJsonContents, - newVersion - ); + for (const package of Object.keys(rushPackages)) { + if ((rushPackages[package].versionPolicy == "client"||rushPackages[package].versionPolicy == "core")){ + await commitChanges(rushPackages, package); + } } -} +}; main(argv); From 210100d31e8d1eb4cfd3fe6f5c1e504527a074c8 Mon Sep 17 00:00:00 2001 From: Karishma Ghiya Date: Tue, 12 Nov 2019 12:12:39 -0800 Subject: [PATCH 04/13] cleanup --- eng/tools/versioning/set-dev-dependencies.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/eng/tools/versioning/set-dev-dependencies.js b/eng/tools/versioning/set-dev-dependencies.js index 7342cec255f0..fec168ba4898 100644 --- a/eng/tools/versioning/set-dev-dependencies.js +++ b/eng/tools/versioning/set-dev-dependencies.js @@ -117,15 +117,11 @@ async function main(argv) { // Update any references to internal projects with the new versions for (const package of Object.keys(rushPackages)) { - if ((rushPackages[package].versionPolicy == "client"||rushPackages[package].versionPolicy == "core")){ - rushPackages = updateInternalDependencyVersions(rushPackages, package); - } + rushPackages = updateInternalDependencyVersions(rushPackages, package); } for (const package of Object.keys(rushPackages)) { - if ((rushPackages[package].versionPolicy == "client"||rushPackages[package].versionPolicy == "core")){ await commitChanges(rushPackages, package); - } } }; From 55137e89400d208b64ba01d85ded7099edeb34ea Mon Sep 17 00:00:00 2001 From: Karishma Ghiya Date: Tue, 12 Nov 2019 12:14:34 -0800 Subject: [PATCH 05/13] cleanup --- eng/pipelines/templates/jobs/archetype-sdk-client.yml | 2 +- eng/tools/versioning/set-dev.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/pipelines/templates/jobs/archetype-sdk-client.yml b/eng/pipelines/templates/jobs/archetype-sdk-client.yml index 776fb8c4f32f..1e7e98b4b681 100644 --- a/eng/pipelines/templates/jobs/archetype-sdk-client.yml +++ b/eng/pipelines/templates/jobs/archetype-sdk-client.yml @@ -64,7 +64,7 @@ jobs: - script: | npm install ./eng/tools/versioning - node eng/tools/versioning/set-dev.js --build-id "$(Build.BuildNumber)" --repo-root "$(Build.SourcesDirectory)" --service "$(folder)" + node eng/tools/versioning/set-dev-dependencies.js --build-id "$(Build.BuildNumber)" --repo-root "$(Build.SourcesDirectory)" --service "$(folder)" node common/scripts/install-run-rush.js update condition: eq(variables['SetDevVersion'],'true') displayName: "Update package versions for dev build" diff --git a/eng/tools/versioning/set-dev.js b/eng/tools/versioning/set-dev.js index 1280c29dede4..efd861843f41 100644 --- a/eng/tools/versioning/set-dev.js +++ b/eng/tools/versioning/set-dev.js @@ -60,7 +60,7 @@ async function main(argv) { ); const newVersion = getDevVersion(packageJsonContents.version, buildId); console.log(`File ${targetPackageJson} version updated to ${newVersion}`); - var updatedPackageSpec = { + const updatedPackageSpec = { ...packageJsonContents, version: newVersion }; From 1a52f1e214092cfdc1e6ff52864864814631c8aa Mon Sep 17 00:00:00 2001 From: Karishma Ghiya Date: Tue, 12 Nov 2019 17:08:49 -0800 Subject: [PATCH 06/13] change what dependencies are updated --- eng/tools/versioning/set-dev-dependencies.js | 41 +++++++++++++------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/eng/tools/versioning/set-dev-dependencies.js b/eng/tools/versioning/set-dev-dependencies.js index fec168ba4898..e722bb8e8a2a 100644 --- a/eng/tools/versioning/set-dev-dependencies.js +++ b/eng/tools/versioning/set-dev-dependencies.js @@ -52,10 +52,12 @@ const updatePackageVersion = (rushPackages, package, buildId) => { return rushPackages; }; -const updateDependencySection = (rushPackages, dependencySection) => { +const updateDependencySection = (rushPackages, dependencySection,buildId) => { console.log(dependencySection); - if(dependencySection){ - for (const [depName, depVersionRange] of Object.entries(dependencySection)) { + if (dependencySection) { + for (const [depName, depVersionRange] of Object.entries( + dependencySection + )) { console.log(`checking ${depName}:${depVersionRange}...`); // If the dependency isn't part of the Rush workspace, skip it @@ -69,29 +71,36 @@ const updateDependencySection = (rushPackages, dependencySection) => { console.log(`version in package's dep = ${depVersionRange}`); console.log(`dep's version = ${packageVersion}`); - // If the dependency range is satisfied by the package's current version, - // replace it with an exact match to the package's new version - if (semver.satisfies(packageVersion, depVersionRange)) { - // Commit the dependency version to the JSON document - if(rushPackages[depName].newVer !== undefined){ - dependencySection[depName] = rushPackages[depName].newVer; - } + const parsedPackageVersion = semver.parse(packageVersion); + const parsedDepVersion = semver.parse(depVersionRange); + + if (parsedDepVersion.major == parsedPackageVersion.major && parsedDepVersion.minor == parsedPackageVersion.minor && parsedDepVersion.patch == parsedPackageVersion.patch) { + rushPackages[depName].newVer = `${parsedPackageVersion.major}.${parsedPackageVersion.minor}.${parsedPackageVersion.patch}-dev.${buildId}`; + dependencySection[depName] = `^${parsedPackageVersion.major}.${parsedPackageVersion.minor}.${parsedPackageVersion.patch}-dev`; } + // // If the dependency range is satisfied by the package's current version, + // // replace it with an exact match to the package's new version + // if (semver.satisfies(packageVersion, depVersionRange)) { + // // Commit the dependency version to the JSON document + // if(rushPackages[depName].newVer !== undefined){ + // dependencySection[depName] = rushPackages[depName].newVer; + // } + // } } } return rushPackages; }; -const updateInternalDependencyVersions = (rushPackages, package) => { +const updateInternalDependencyVersions = (rushPackages, package, buildId) => { console.log(package); console.log("checking dependencies .."); - rushPackages = updateDependencySection(rushPackages,rushPackages[package].json.dependencies); + rushPackages = updateDependencySection(rushPackages,rushPackages[package].json.dependencies,buildId); console.log("checking devDependencies .."); - rushPackages = updateDependencySection(rushPackages,rushPackages[package].json.devDependencies); + rushPackages = updateDependencySection(rushPackages,rushPackages[package].json.devDependencies,buildId); console.log("checking peerDependencies .."); - rushPackages = updateDependencySection(rushPackages,rushPackages[package].json.peerDependencies); + rushPackages = updateDependencySection(rushPackages,rushPackages[package].json.peerDependencies,buildId); return rushPackages; }; @@ -117,7 +126,9 @@ async function main(argv) { // Update any references to internal projects with the new versions for (const package of Object.keys(rushPackages)) { - rushPackages = updateInternalDependencyVersions(rushPackages, package); + if ((rushPackages[package].versionPolicy == "client"||rushPackages[package].versionPolicy == "core") && (rushPackages[package].projectFolder.startsWith(`sdk/${service}`))){ + rushPackages = updateInternalDependencyVersions(rushPackages, package, buildId); + } } for (const package of Object.keys(rushPackages)) { From 9f979308cb5f56cef6fa561250e29c25feab9b6c Mon Sep 17 00:00:00 2001 From: Karishma Ghiya Date: Tue, 12 Nov 2019 17:55:52 -0800 Subject: [PATCH 07/13] parse versions --- eng/tools/versioning/set-dev-dependencies.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/eng/tools/versioning/set-dev-dependencies.js b/eng/tools/versioning/set-dev-dependencies.js index e722bb8e8a2a..b95013240af9 100644 --- a/eng/tools/versioning/set-dev-dependencies.js +++ b/eng/tools/versioning/set-dev-dependencies.js @@ -68,16 +68,17 @@ const updateDependencySection = (rushPackages, dependencySection,buildId) => { // Compare the dependency version range with the package's current version const packageVersion = rushPackages[depName].json.version; - console.log(`version in package's dep = ${depVersionRange}`); - console.log(`dep's version = ${packageVersion}`); + console.log(`version in package's dep = ${depVersionRange}`);//^1.0.0 + console.log(`dep's version = ${packageVersion}`);//1.0.0 const parsedPackageVersion = semver.parse(packageVersion); - const parsedDepVersion = semver.parse(depVersionRange); - - if (parsedDepVersion.major == parsedPackageVersion.major && parsedDepVersion.minor == parsedPackageVersion.minor && parsedDepVersion.patch == parsedPackageVersion.patch) { + const parsedDepMinVersion = semver.minVersion(depVersionRange); + + if (parsedDepMinVersion.major == parsedPackageVersion.major && parsedDepMinVersion.minor == parsedPackageVersion.minor && parsedDepMinVersion.patch == parsedPackageVersion.patch) { rushPackages[depName].newVer = `${parsedPackageVersion.major}.${parsedPackageVersion.minor}.${parsedPackageVersion.patch}-dev.${buildId}`; dependencySection[depName] = `^${parsedPackageVersion.major}.${parsedPackageVersion.minor}.${parsedPackageVersion.patch}-dev`; } + //console.log(semver.satisfies("1.0.0-dev-2019.02.34","^1.0.0-dev")); // // If the dependency range is satisfied by the package's current version, // // replace it with an exact match to the package's new version // if (semver.satisfies(packageVersion, depVersionRange)) { From b48751357348337bffa2781d3744b6232b70880a Mon Sep 17 00:00:00 2001 From: Karishma Ghiya Date: Tue, 12 Nov 2019 18:18:08 -0800 Subject: [PATCH 08/13] cleanup --- eng/tools/versioning/set-dev-dependencies.js | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/eng/tools/versioning/set-dev-dependencies.js b/eng/tools/versioning/set-dev-dependencies.js index b95013240af9..7a9be8dfdb69 100644 --- a/eng/tools/versioning/set-dev-dependencies.js +++ b/eng/tools/versioning/set-dev-dependencies.js @@ -78,15 +78,6 @@ const updateDependencySection = (rushPackages, dependencySection,buildId) => { rushPackages[depName].newVer = `${parsedPackageVersion.major}.${parsedPackageVersion.minor}.${parsedPackageVersion.patch}-dev.${buildId}`; dependencySection[depName] = `^${parsedPackageVersion.major}.${parsedPackageVersion.minor}.${parsedPackageVersion.patch}-dev`; } - //console.log(semver.satisfies("1.0.0-dev-2019.02.34","^1.0.0-dev")); - // // If the dependency range is satisfied by the package's current version, - // // replace it with an exact match to the package's new version - // if (semver.satisfies(packageVersion, depVersionRange)) { - // // Commit the dependency version to the JSON document - // if(rushPackages[depName].newVer !== undefined){ - // dependencySection[depName] = rushPackages[depName].newVer; - // } - // } } } return rushPackages; @@ -135,6 +126,10 @@ async function main(argv) { for (const package of Object.keys(rushPackages)) { await commitChanges(rushPackages, package); } + // console.log(semver.satisfies("1.0.0-dev-20191112.1", "^1.0.0"));//false + // console.log(semver.satisfies("1.0.0-dev-20191112.1", "^1.0.0-dev"));//true + // console.log(semver.satisfies("1.0.0", "^1.0.0-dev"));//true + }; main(argv); From 9cb021f947fc47f6248fe05da5f1859c8f7fe880 Mon Sep 17 00:00:00 2001 From: Karishma Ghiya Date: Tue, 12 Nov 2019 18:35:43 -0800 Subject: [PATCH 09/13] cleaned up script and pipeline --- .../templates/jobs/archetype-sdk-client.yml | 2 +- eng/tools/versioning/set-dev-dependencies.js | 135 -------------- eng/tools/versioning/set-dev.js | 165 ++++++++++++++---- 3 files changed, 128 insertions(+), 174 deletions(-) delete mode 100644 eng/tools/versioning/set-dev-dependencies.js diff --git a/eng/pipelines/templates/jobs/archetype-sdk-client.yml b/eng/pipelines/templates/jobs/archetype-sdk-client.yml index 1e7e98b4b681..776fb8c4f32f 100644 --- a/eng/pipelines/templates/jobs/archetype-sdk-client.yml +++ b/eng/pipelines/templates/jobs/archetype-sdk-client.yml @@ -64,7 +64,7 @@ jobs: - script: | npm install ./eng/tools/versioning - node eng/tools/versioning/set-dev-dependencies.js --build-id "$(Build.BuildNumber)" --repo-root "$(Build.SourcesDirectory)" --service "$(folder)" + node eng/tools/versioning/set-dev.js --build-id "$(Build.BuildNumber)" --repo-root "$(Build.SourcesDirectory)" --service "$(folder)" node common/scripts/install-run-rush.js update condition: eq(variables['SetDevVersion'],'true') displayName: "Update package versions for dev build" diff --git a/eng/tools/versioning/set-dev-dependencies.js b/eng/tools/versioning/set-dev-dependencies.js deleted file mode 100644 index 7a9be8dfdb69..000000000000 --- a/eng/tools/versioning/set-dev-dependencies.js +++ /dev/null @@ -1,135 +0,0 @@ -let argv = require("yargs") - .options({ - "build-id": { - type: "string", - describe: "build ID suffix to give the package (e.g. usually YYYYMMDD.r)", - demandOption: true - }, - "repo-root": { - type: "string", - default: "../../../", - describe: "root of the repository (e.g. ../../../)", - demandOption: true - }, - service: { - type: "string", - describe: - "service directory whose packages should be updated (if not set updates all directories)" - } - }) - .help().argv; - -const path = require("path"); -const semver = require("semver"); -const versionUtils = require("./VersionUtils"); - -const commitChanges = async (rushPackages, package) => { - // Commit the new version to the JSON document - if(rushPackages[package].newVer){ - rushPackages[package].json.version = rushPackages[package].newVer; - } - try { - // Write out the JSON document to disk - await versionUtils.writePackageJson( - rushPackages[package].src, - rushPackages[package].json - ); - console.info( - "File " + - rushPackages[package].src + - " created successfully with Node.js v10 fs/promises!" - ); - } catch (e) { - console.error(e); - } -}; - -const updatePackageVersion = (rushPackages, package, buildId) => { - const currentVersion = rushPackages[package].json.version; - const parsedVersion = semver.parse(currentVersion); - rushPackages[package].newVer = `${parsedVersion.major}.${parsedVersion.minor}.${parsedVersion.patch}-dev.${buildId}`; - console.log(`version updated for ${package}`); - return rushPackages; -}; - -const updateDependencySection = (rushPackages, dependencySection,buildId) => { - console.log(dependencySection); - if (dependencySection) { - for (const [depName, depVersionRange] of Object.entries( - dependencySection - )) { - console.log(`checking ${depName}:${depVersionRange}...`); - - // If the dependency isn't part of the Rush workspace, skip it - if (!rushPackages[depName]) { - continue; - } - - // Compare the dependency version range with the package's current version - const packageVersion = rushPackages[depName].json.version; - - console.log(`version in package's dep = ${depVersionRange}`);//^1.0.0 - console.log(`dep's version = ${packageVersion}`);//1.0.0 - - const parsedPackageVersion = semver.parse(packageVersion); - const parsedDepMinVersion = semver.minVersion(depVersionRange); - - if (parsedDepMinVersion.major == parsedPackageVersion.major && parsedDepMinVersion.minor == parsedPackageVersion.minor && parsedDepMinVersion.patch == parsedPackageVersion.patch) { - rushPackages[depName].newVer = `${parsedPackageVersion.major}.${parsedPackageVersion.minor}.${parsedPackageVersion.patch}-dev.${buildId}`; - dependencySection[depName] = `^${parsedPackageVersion.major}.${parsedPackageVersion.minor}.${parsedPackageVersion.patch}-dev`; - } - } - } - return rushPackages; -}; - -const updateInternalDependencyVersions = (rushPackages, package, buildId) => { - console.log(package); - console.log("checking dependencies .."); - rushPackages = updateDependencySection(rushPackages,rushPackages[package].json.dependencies,buildId); - - console.log("checking devDependencies .."); - rushPackages = updateDependencySection(rushPackages,rushPackages[package].json.devDependencies,buildId); - - console.log("checking peerDependencies .."); - rushPackages = updateDependencySection(rushPackages,rushPackages[package].json.peerDependencies,buildId); - - return rushPackages; -}; - - -async function main(argv) { - const buildId = argv["build-id"]; - const repoRoot = argv["repo-root"]; - const service = argv["service"]; - - var rushPackages = await versionUtils.getRushPackageJsons(repoRoot); - - // Set all the new versions - console.log(`Updating packages with build ID ${buildId}`); - for (const package of Object.keys(rushPackages)) { - if ((rushPackages[package].versionPolicy == "client"||rushPackages[package].versionPolicy == "core") && (rushPackages[package].projectFolder.startsWith(`sdk/${service}`))){ - console.log("package updated = "); - console.log(package); - rushPackages = updatePackageVersion(rushPackages, package, buildId); - console.log(rushPackages[package].newVer); - } - }; - - // Update any references to internal projects with the new versions - for (const package of Object.keys(rushPackages)) { - if ((rushPackages[package].versionPolicy == "client"||rushPackages[package].versionPolicy == "core") && (rushPackages[package].projectFolder.startsWith(`sdk/${service}`))){ - rushPackages = updateInternalDependencyVersions(rushPackages, package, buildId); - } - } - - for (const package of Object.keys(rushPackages)) { - await commitChanges(rushPackages, package); - } - // console.log(semver.satisfies("1.0.0-dev-20191112.1", "^1.0.0"));//false - // console.log(semver.satisfies("1.0.0-dev-20191112.1", "^1.0.0-dev"));//true - // console.log(semver.satisfies("1.0.0", "^1.0.0-dev"));//true - -}; - -main(argv); diff --git a/eng/tools/versioning/set-dev.js b/eng/tools/versioning/set-dev.js index efd861843f41..69262c899633 100644 --- a/eng/tools/versioning/set-dev.js +++ b/eng/tools/versioning/set-dev.js @@ -23,56 +23,145 @@ const path = require("path"); const semver = require("semver"); const versionUtils = require("./VersionUtils"); -function getDevVersion(currentVersion, buildId) { +const commitChanges = async (rushPackages, package) => { + // Commit the new version to the JSON document + if (rushPackages[package].newVer) { + rushPackages[package].json.version = rushPackages[package].newVer; + } + try { + // Write out the JSON document to disk + await versionUtils.writePackageJson( + rushPackages[package].src, + rushPackages[package].json + ); + console.info( + "File " + + rushPackages[package].src + + " created successfully with Node.js v10 fs/promises!" + ); + } catch (e) { + console.error(e); + } +}; + +const updatePackageVersion = (rushPackages, package, buildId) => { + const currentVersion = rushPackages[package].json.version; const parsedVersion = semver.parse(currentVersion); - return `${parsedVersion.major}.${parsedVersion.minor}.${parsedVersion.patch}-dev.${buildId}`; -} + rushPackages[ + package + ].newVer = `${parsedVersion.major}.${parsedVersion.minor}.${parsedVersion.patch}-dev.${buildId}`; + console.log(`version updated for ${package}`); + return rushPackages; +}; -async function main(argv) { - const buildId = argv["build-id"]; - const repoRoot = argv["repo-root"]; - const service = argv["service"]; +const updateDependencySection = (rushPackages, dependencySection, buildId) => { + console.log(dependencySection); + if (dependencySection) { + for (const [depName, depVersionRange] of Object.entries( + dependencySection + )) { + console.log(`checking ${depName}:${depVersionRange}...`); - var rushSpec = await versionUtils.getRushSpec(repoRoot); + // If the dependency isn't part of the Rush workspace, skip it + if (!rushPackages[depName]) { + continue; + } - console.log(`Updating packages with Build ID ${buildId}`); + // Compare the dependency version range with the package's current version + const packageVersion = rushPackages[depName].json.version; - const scopedPackages = rushSpec.projects.filter(package => - service ? package.projectFolder.startsWith(`sdk/${service}`) : true - ); + console.log(`version in package's dep = ${depVersionRange}`); //^1.0.0 + console.log(`dep's version = ${packageVersion}`); //1.0.0 + + const parsedPackageVersion = semver.parse(packageVersion); + const parsedDepMinVersion = semver.minVersion(depVersionRange); - let appropriateVersionedPackages = scopedPackages.filter( - package => - package.versionPolicyName == "core" || - package.versionPolicyName == "client" + if ( + parsedDepMinVersion.major == parsedPackageVersion.major && + parsedDepMinVersion.minor == parsedPackageVersion.minor && + parsedDepMinVersion.patch == parsedPackageVersion.patch + ) { + rushPackages[ + depName + ].newVer = `${parsedPackageVersion.major}.${parsedPackageVersion.minor}.${parsedPackageVersion.patch}-dev.${buildId}`; + dependencySection[ + depName + ] = `^${parsedPackageVersion.major}.${parsedPackageVersion.minor}.${parsedPackageVersion.patch}-dev`; + } + } + } + return rushPackages; +}; + +const updateInternalDependencyVersions = (rushPackages, package, buildId) => { + console.log(package); + console.log("checking dependencies .."); + rushPackages = updateDependencySection( + rushPackages, + rushPackages[package].json.dependencies, + buildId ); - console.log(appropriateVersionedPackages); + console.log("checking devDependencies .."); + rushPackages = updateDependencySection( + rushPackages, + rushPackages[package].json.devDependencies, + buildId + ); - let targetPackages = appropriateVersionedPackages.map(project => - path.resolve(path.join(repoRoot, project.projectFolder)) + console.log("checking peerDependencies .."); + rushPackages = updateDependencySection( + rushPackages, + rushPackages[package].json.peerDependencies, + buildId ); - for (const targetFolder of targetPackages) { - const targetPackageJson = path.join(targetFolder, "package.json"); - const packageJsonContents = await versionUtils.readFileJson( - targetPackageJson - ); - const newVersion = getDevVersion(packageJsonContents.version, buildId); - console.log(`File ${targetPackageJson} version updated to ${newVersion}`); - const updatedPackageSpec = { - ...packageJsonContents, - version: newVersion - }; - - await versionUtils.writePackageJson(targetPackageJson, updatedPackageSpec); - - await versionUtils.updatePackageConstants( - targetFolder, - packageJsonContents, - newVersion - ); + return rushPackages; +}; + +async function main(argv) { + const buildId = argv["build-id"]; + const repoRoot = argv["repo-root"]; + const service = argv["service"]; + + var rushPackages = await versionUtils.getRushPackageJsons(repoRoot); + + // Set all the new versions + console.log(`Updating packages with build ID ${buildId}`); + for (const package of Object.keys(rushPackages)) { + if ( + (rushPackages[package].versionPolicy == "client" || + rushPackages[package].versionPolicy == "core") && + rushPackages[package].projectFolder.startsWith(`sdk/${service}`) + ) { + console.log("package updated = "); + console.log(package); + rushPackages = updatePackageVersion(rushPackages, package, buildId); + console.log(rushPackages[package].newVer); + } + } + + // Update any references to internal projects with the new versions + for (const package of Object.keys(rushPackages)) { + if ( + (rushPackages[package].versionPolicy == "client" || + rushPackages[package].versionPolicy == "core") && + rushPackages[package].projectFolder.startsWith(`sdk/${service}`) + ) { + rushPackages = updateInternalDependencyVersions( + rushPackages, + package, + buildId + ); + } + } + + for (const package of Object.keys(rushPackages)) { + await commitChanges(rushPackages, package); } + // console.log(semver.satisfies("1.0.0-dev-20191112.1", "^1.0.0"));//false + // console.log(semver.satisfies("1.0.0-dev-20191112.1", "^1.0.0-dev"));//true + // console.log(semver.satisfies("1.0.0", "^1.0.0-dev"));//true } main(argv); From 5080a2ae67449f32f0b0c678bf0662a02608fa96 Mon Sep 17 00:00:00 2001 From: Karishma Ghiya Date: Thu, 14 Nov 2019 11:07:15 -0800 Subject: [PATCH 10/13] Daniel's code suggestions --- eng/tools/versioning/set-dev.js | 41 ++++++++++++++++----------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/eng/tools/versioning/set-dev.js b/eng/tools/versioning/set-dev.js index 69262c899633..c53dc2973062 100644 --- a/eng/tools/versioning/set-dev.js +++ b/eng/tools/versioning/set-dev.js @@ -126,34 +126,33 @@ async function main(argv) { var rushPackages = await versionUtils.getRushPackageJsons(repoRoot); - // Set all the new versions - console.log(`Updating packages with build ID ${buildId}`); + let targetPackages = []; for (const package of Object.keys(rushPackages)) { if ( - (rushPackages[package].versionPolicy == "client" || - rushPackages[package].versionPolicy == "core") && - rushPackages[package].projectFolder.startsWith(`sdk/${service}`) + ["client", "core"].includes(rushPackages[package].versionPolicy) + && rushPackages[package].projectFolder.startsWith(`sdk/${service}`) ) { - console.log("package updated = "); - console.log(package); - rushPackages = updatePackageVersion(rushPackages, package, buildId); - console.log(rushPackages[package].newVer); + targetPackages.push(package); } } + + // Set all the new versions + console.log(`Updating packages with build ID ${buildId}`); + for (const package of targetPackages) { + console.log("package updated = "); + console.log(package); + rushPackages = updatePackageVersion(rushPackages, package, buildId); + console.log(rushPackages[package].newVer); + } + // Update any references to internal projects with the new versions - for (const package of Object.keys(rushPackages)) { - if ( - (rushPackages[package].versionPolicy == "client" || - rushPackages[package].versionPolicy == "core") && - rushPackages[package].projectFolder.startsWith(`sdk/${service}`) - ) { - rushPackages = updateInternalDependencyVersions( - rushPackages, - package, - buildId - ); - } + for (const package of targetPackages) { + rushPackages = updateInternalDependencyVersions( + rushPackages, + package, + buildId + ); } for (const package of Object.keys(rushPackages)) { From c4e235b78643ed91f5d4f56fb1c02063cdd42e34 Mon Sep 17 00:00:00 2001 From: Karishma Ghiya Date: Thu, 14 Nov 2019 16:56:33 -0800 Subject: [PATCH 11/13] adding dependencies in both directions --- eng/tools/versioning/set-dev.js | 73 +++++++++++++++++++++++++++------ 1 file changed, 61 insertions(+), 12 deletions(-) diff --git a/eng/tools/versioning/set-dev.js b/eng/tools/versioning/set-dev.js index c53dc2973062..23310915ae7b 100644 --- a/eng/tools/versioning/set-dev.js +++ b/eng/tools/versioning/set-dev.js @@ -47,10 +47,11 @@ const commitChanges = async (rushPackages, package) => { const updatePackageVersion = (rushPackages, package, buildId) => { const currentVersion = rushPackages[package].json.version; const parsedVersion = semver.parse(currentVersion); - rushPackages[ - package - ].newVer = `${parsedVersion.major}.${parsedVersion.minor}.${parsedVersion.patch}-dev.${buildId}`; + rushPackages[package].newVer = `${parsedVersion.major}.${parsedVersion.minor}.${parsedVersion.patch}-dev.${buildId}`; console.log(`version updated for ${package}`); + for (const pkg of Object.keys(rushPackages)) { + rushPackages = makeInternalDependenciesConsistent(rushPackages, pkg,package); + } return rushPackages; }; @@ -81,12 +82,8 @@ const updateDependencySection = (rushPackages, dependencySection, buildId) => { parsedDepMinVersion.minor == parsedPackageVersion.minor && parsedDepMinVersion.patch == parsedPackageVersion.patch ) { - rushPackages[ - depName - ].newVer = `${parsedPackageVersion.major}.${parsedPackageVersion.minor}.${parsedPackageVersion.patch}-dev.${buildId}`; - dependencySection[ - depName - ] = `^${parsedPackageVersion.major}.${parsedPackageVersion.minor}.${parsedPackageVersion.patch}-dev`; + rushPackages[depName].newVer = `${parsedPackageVersion.major}.${parsedPackageVersion.minor}.${parsedPackageVersion.patch}-dev.${buildId}`; + dependencySection[depName] = `^${parsedPackageVersion.major}.${parsedPackageVersion.minor}.${parsedPackageVersion.patch}-dev`; } } } @@ -94,6 +91,7 @@ const updateDependencySection = (rushPackages, dependencySection, buildId) => { }; const updateInternalDependencyVersions = (rushPackages, package, buildId) => { + console.log("updateInternalDep"); console.log(package); console.log("checking dependencies .."); rushPackages = updateDependencySection( @@ -119,6 +117,58 @@ const updateInternalDependencyVersions = (rushPackages, package, buildId) => { return rushPackages; }; +const makeDependencySectionConsistentForPackage = (rushPackages, dependencySection, depName) => { + console.log("Inside make dep"); + if (dependencySection && dependencySection[depName]) { + depVersionRange = dependencySection[depName]; + + console.log(`checking ${depName}:${depVersionRange}...`); + + // If the dependency isn't part of the Rush workspace, skip it + if (!rushPackages[depName]) { + return rushPackages; + } + + // Compare the dependency version range with the package's current version + const packageVersion = rushPackages[depName].json.version; + + console.log(`version in package's dep = ${depVersionRange}`); + console.log(`dep's version = ${packageVersion}`); + const parsedPackageVersion = semver.parse(packageVersion); + const parsedDepMinVersion = semver.minVersion(depVersionRange); + // If the dependency range is satisfied by the package's current version, + // replace it with an exact match to the package's new version + if ( + parsedDepMinVersion.major == parsedPackageVersion.major && + parsedDepMinVersion.minor == parsedPackageVersion.minor && + parsedDepMinVersion.patch == parsedPackageVersion.patch && + rushPackages[depName].newVer !== undefined + ) { + // Commit the dependency version to the JSON document + dependencySection[ + depName + ] = `^${parsedPackageVersion.major}.${parsedPackageVersion.minor}.${parsedPackageVersion.patch}-dev`; + } + } + return rushPackages; +}; + +const makeInternalDependenciesConsistent = (rushPackages, package,depName) => { + console.log("makeInternalDepConsistent"); + console.log("package = "+ package); + console.log("depName="+depName); + console.log("checking dependencies .."); + console.log(rushPackages); + rushPackages = makeDependencySectionConsistentForPackage(rushPackages, rushPackages[package].json.dependencies,depName); + + console.log("checking devDependencies .."); + rushPackages = makeDependencySectionConsistentForPackage(rushPackages, rushPackages[package].json.devDependencies,depName); + + console.log("checking peerDependencies .."); + rushPackages = makeDependencySectionConsistentForPackage(rushPackages, rushPackages[package].json.peerDependencies,depName); + return rushPackages; +}; + async function main(argv) { const buildId = argv["build-id"]; const repoRoot = argv["repo-root"]; @@ -129,14 +179,13 @@ async function main(argv) { let targetPackages = []; for (const package of Object.keys(rushPackages)) { if ( - ["client", "core"].includes(rushPackages[package].versionPolicy) - && rushPackages[package].projectFolder.startsWith(`sdk/${service}`) + ["client", "core"].includes(rushPackages[package].versionPolicy) && + rushPackages[package].projectFolder.startsWith(`sdk/${service}`) ) { targetPackages.push(package); } } - // Set all the new versions console.log(`Updating packages with build ID ${buildId}`); for (const package of targetPackages) { From dcbe464262f53c31ce41d9af0247fc0e5607098c Mon Sep 17 00:00:00 2001 From: Karishma Ghiya Date: Thu, 14 Nov 2019 17:16:51 -0800 Subject: [PATCH 12/13] adding function call for dependencies too --- eng/tools/versioning/set-dev.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/eng/tools/versioning/set-dev.js b/eng/tools/versioning/set-dev.js index 23310915ae7b..71b9712224c6 100644 --- a/eng/tools/versioning/set-dev.js +++ b/eng/tools/versioning/set-dev.js @@ -56,7 +56,7 @@ const updatePackageVersion = (rushPackages, package, buildId) => { }; const updateDependencySection = (rushPackages, dependencySection, buildId) => { - console.log(dependencySection); + //console.log(dependencySection); if (dependencySection) { for (const [depName, depVersionRange] of Object.entries( dependencySection @@ -82,8 +82,11 @@ const updateDependencySection = (rushPackages, dependencySection, buildId) => { parsedDepMinVersion.minor == parsedPackageVersion.minor && parsedDepMinVersion.patch == parsedPackageVersion.patch ) { - rushPackages[depName].newVer = `${parsedPackageVersion.major}.${parsedPackageVersion.minor}.${parsedPackageVersion.patch}-dev.${buildId}`; - dependencySection[depName] = `^${parsedPackageVersion.major}.${parsedPackageVersion.minor}.${parsedPackageVersion.patch}-dev`; + rushPackages[depName].newVer = `${parsedPackageVersion.major}.${parsedPackageVersion.minor}.${parsedPackageVersion.patch}-dev.${buildId}`; + dependencySection[depName] = `^${parsedPackageVersion.major}.${parsedPackageVersion.minor}.${parsedPackageVersion.patch}-dev`; + for (const pkg of Object.keys(rushPackages)) { + rushPackages = makeInternalDependenciesConsistent(rushPackages, pkg,depName); + } } } } @@ -158,7 +161,7 @@ const makeInternalDependenciesConsistent = (rushPackages, package,depName) => { console.log("package = "+ package); console.log("depName="+depName); console.log("checking dependencies .."); - console.log(rushPackages); + rushPackages = makeDependencySectionConsistentForPackage(rushPackages, rushPackages[package].json.dependencies,depName); console.log("checking devDependencies .."); From 3d1b05c1da4f553d762dd940f9a033c770501f31 Mon Sep 17 00:00:00 2001 From: Karishma Ghiya Date: Thu, 14 Nov 2019 18:33:36 -0800 Subject: [PATCH 13/13] Code refining - Wes suggestions --- eng/tools/versioning/set-dev.js | 35 ++++++++++----------------------- 1 file changed, 10 insertions(+), 25 deletions(-) diff --git a/eng/tools/versioning/set-dev.js b/eng/tools/versioning/set-dev.js index 71b9712224c6..afadfa6b0d4e 100644 --- a/eng/tools/versioning/set-dev.js +++ b/eng/tools/versioning/set-dev.js @@ -50,7 +50,7 @@ const updatePackageVersion = (rushPackages, package, buildId) => { rushPackages[package].newVer = `${parsedVersion.major}.${parsedVersion.minor}.${parsedVersion.patch}-dev.${buildId}`; console.log(`version updated for ${package}`); for (const pkg of Object.keys(rushPackages)) { - rushPackages = makeInternalDependenciesConsistent(rushPackages, pkg,package); + rushPackages = updateOtherProjectDependencySections(rushPackages, pkg,package); } return rushPackages; }; @@ -82,11 +82,7 @@ const updateDependencySection = (rushPackages, dependencySection, buildId) => { parsedDepMinVersion.minor == parsedPackageVersion.minor && parsedDepMinVersion.patch == parsedPackageVersion.patch ) { - rushPackages[depName].newVer = `${parsedPackageVersion.major}.${parsedPackageVersion.minor}.${parsedPackageVersion.patch}-dev.${buildId}`; - dependencySection[depName] = `^${parsedPackageVersion.major}.${parsedPackageVersion.minor}.${parsedPackageVersion.patch}-dev`; - for (const pkg of Object.keys(rushPackages)) { - rushPackages = makeInternalDependenciesConsistent(rushPackages, pkg,depName); - } + rushPackages = updatePackageVersion(rushPackages,depName,buildId); } } } @@ -147,17 +143,17 @@ const makeDependencySectionConsistentForPackage = (rushPackages, dependencySecti parsedDepMinVersion.patch == parsedPackageVersion.patch && rushPackages[depName].newVer !== undefined ) { - // Commit the dependency version to the JSON document - dependencySection[ - depName - ] = `^${parsedPackageVersion.major}.${parsedPackageVersion.minor}.${parsedPackageVersion.patch}-dev`; + + // Setting version to ^[major.minor.patch]-dev so that this automatically matches + // with the latest dev version published on npm + dependencySection[depName] = `^${parsedPackageVersion.major}.${parsedPackageVersion.minor}.${parsedPackageVersion.patch}-dev`; } } return rushPackages; }; -const makeInternalDependenciesConsistent = (rushPackages, package,depName) => { - console.log("makeInternalDepConsistent"); +const updateOtherProjectDependencySections = (rushPackages, package,depName) => { + console.log("updateOtherProjectDependencySections"); console.log("package = "+ package); console.log("depName="+depName); console.log("checking dependencies .."); @@ -189,30 +185,19 @@ async function main(argv) { } } - // Set all the new versions + // Set all the new versions & update any references to internal projects with the new versions console.log(`Updating packages with build ID ${buildId}`); for (const package of targetPackages) { console.log("package updated = "); console.log(package); rushPackages = updatePackageVersion(rushPackages, package, buildId); + rushPackages = updateInternalDependencyVersions(rushPackages,package,buildId); console.log(rushPackages[package].newVer); } - // Update any references to internal projects with the new versions - for (const package of targetPackages) { - rushPackages = updateInternalDependencyVersions( - rushPackages, - package, - buildId - ); - } - for (const package of Object.keys(rushPackages)) { await commitChanges(rushPackages, package); } - // console.log(semver.satisfies("1.0.0-dev-20191112.1", "^1.0.0"));//false - // console.log(semver.satisfies("1.0.0-dev-20191112.1", "^1.0.0-dev"));//true - // console.log(semver.satisfies("1.0.0", "^1.0.0-dev"));//true } main(argv);