Skip to content

Commit 8c30af4

Browse files
Update update changelog (Azure#13079)
* Add function for retrieving existing versions of packages * Add SetPackageVersion function * Update versioning tools * Add GetPackageInstallNotes function * Remove changes not related to changelog
1 parent 468d73b commit 8c30af4

File tree

4 files changed

+62
-28
lines changed

4 files changed

+62
-28
lines changed

eng/scripts/Language-Settings.ps1

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,13 +210,13 @@ function Find-javascript-Artifacts-For-Apireview($artifactDir, $packageName = ""
210210
$pkgName = $pattern.replace($packageName, "", 1)
211211
$packageDir = Join-Path $artifactDir $pkgName "temp"
212212
Write-Host "Searching for *.api.json in path $($packageDir)"
213-
$files = Get-ChildItem "${packageDir}" | Where-Object -FilterScript {$_.Name.EndsWith(".api.json")}
213+
$files = Get-ChildItem "${packageDir}" | Where-Object -FilterScript { $_.Name.EndsWith(".api.json") }
214214
if (!$files)
215215
{
216216
Write-Host "$($packageDir) does not have api review json for package"
217217
return $null
218218
}
219-
elseif($files.Count -ne 1)
219+
elseif ($files.Count -ne 1)
220220
{
221221
Write-Host "$($packageDir) should contain only one api review for $($packageName)"
222222
Write-Host "No of Packages $($files.Count)"
@@ -228,3 +228,15 @@ function Find-javascript-Artifacts-For-Apireview($artifactDir, $packageName = ""
228228
}
229229
return $packages
230230
}
231+
232+
function SetPackageVersion ($PackageName, $Version, $ServiceDirectory = $null, $ReleaseDate, $BuildType = $null, $GroupId = $null)
233+
{
234+
if ($null -eq $ReleaseDate)
235+
{
236+
$ReleaseDate = Get-Date -Format "yyyy-MM-dd"
237+
}
238+
Push-Location "$EngDir/tools/versioning"
239+
npm install
240+
node ./set-version.js --artifact-name $PackageName --new-version $Version --release-date $ReleaseDate --repo-root $RepoRoot
241+
Pop-Location
242+
}

eng/tools/versioning/VersionUtils.js

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
const path = require("path");
22
const { readFile, writeFile } = require("eng-package-utils");
3-
var spawnSync = require("child_process").spawnSync, child;
3+
var spawnSync = require("child_process").spawnSync,
4+
child;
45

56
// This is done to update files which are only periodically generated and
67
// checked in. Since these files could be generated once between many versions
@@ -17,10 +18,7 @@ async function updatePackageConstants(packagePath, packageJson, newVersion) {
1718
const fileContents = await readFile(targetPath);
1819

1920
const versionExpression = buildSemverRegex(constantFileSpec.prefix);
20-
const updatedContents = fileContents.replace(
21-
versionExpression,
22-
`$1${newVersion}`
23-
);
21+
const updatedContents = fileContents.replace(versionExpression, `$1${newVersion}`);
2422

2523
if (updatedContents == fileContents) {
2624
continue;
@@ -34,10 +32,24 @@ function buildSemverRegex(prefix) {
3432
return new RegExp(`(${prefix}.*?)(${semverRegex.toString()})`, "g");
3533
}
3634

37-
function updateChangelog(targetPackagePath, repoRoot, newVersion, unreleased, replaceVersion) {
38-
const changelogLocation = path.join(targetPackagePath, "CHANGELOG.md");
39-
const updateChangelogPath = path.resolve(path.join(repoRoot, "eng/common/Update-Change-Log.ps1"));
40-
child = spawnSync("pwsh", [updateChangelogPath, newVersion, changelogLocation, unreleased, replaceVersion]);
35+
function updateChangelog(
36+
targetPackagePath,
37+
packageName,
38+
repoRoot,
39+
newVersion,
40+
unreleased,
41+
replaceVersion,
42+
releaseDate = null
43+
) {
44+
const service = path.basename(path.dirname(targetPackagePath));
45+
const updateChangelogPath = path.resolve(
46+
path.join(repoRoot, "eng/common/scripts/Update-ChangeLog.ps1")
47+
);
48+
let args = [updateChangelogPath, newVersion, service, packageName, unreleased, replaceVersion];
49+
if (releaseDate != null) {
50+
args.push(releaseDate);
51+
}
52+
child = spawnSync("pwsh", args);
4153
console.log("Powershell Data: " + child.stdout);
4254
console.log("Powershell Errors: " + child.stderr);
4355

eng/tools/versioning/increment.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,13 @@ async function main(argv) {
3939

4040
const rushSpec = await packageUtils.getRushSpec(repoRoot);
4141
const targetPackage = rushSpec.projects.find(
42-
packageSpec => packageSpec.packageName.replace("@", "").replace("/", "-") == artifactName
42+
(packageSpec) => packageSpec.packageName.replace("@", "").replace("/", "-") == artifactName
4343
);
4444

4545
const targetPackagePath = path.join(repoRoot, targetPackage.projectFolder);
4646
const packageJsonLocation = path.join(targetPackagePath, "package.json");
4747

48-
const packageJsonContents = await packageUtils.readFileJson(
49-
packageJsonLocation
50-
);
48+
const packageJsonContents = await packageUtils.readFileJson(packageJsonLocation);
5149

5250
const oldVersion = packageJsonContents.version;
5351
const newVersion = incrementVersion(packageJsonContents.version);
@@ -64,12 +62,15 @@ async function main(argv) {
6462
};
6563
await packageUtils.writePackageJson(packageJsonLocation, updatedPackageJson);
6664

67-
await versionUtils.updatePackageConstants(
65+
await versionUtils.updatePackageConstants(targetPackagePath, packageJsonContents, newVersion);
66+
const updateStatus = versionUtils.updateChangelog(
6867
targetPackagePath,
69-
packageJsonContents,
70-
newVersion
68+
artifactName,
69+
repoRoot,
70+
newVersion,
71+
true,
72+
false
7173
);
72-
const updateStatus = versionUtils.updateChangelog(targetPackagePath, repoRoot, newVersion, true, false);
7374
if (!updateStatus) {
7475
process.exit(1);
7576
}

eng/tools/versioning/set-version.js

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@ let argv = require("yargs")
1111
describe: "package version string",
1212
demandOption: true
1313
},
14+
"release-date": {
15+
type: "string",
16+
default: new Date().toISOString().slice(0, 10),
17+
describe: "the date of intended release",
18+
demandOption: false
19+
},
1420
"repo-root": {
1521
type: "string",
1622
default: "../../../",
@@ -30,21 +36,20 @@ const packageUtils = require("eng-package-utils");
3036
async function main(argv) {
3137
const artifactName = argv["artifact-name"];
3238
const newVersion = argv["new-version"];
39+
const releaseDate = argv["release-date"];
3340
const repoRoot = argv["repo-root"];
3441
const dryRun = argv["dry-run"];
3542

3643
const rushSpec = await packageUtils.getRushSpec(repoRoot);
3744

3845
const targetPackage = rushSpec.projects.find(
39-
packageSpec => packageSpec.packageName.replace("@", "").replace("/", "-") == artifactName
46+
(packageSpec) => packageSpec.packageName.replace("@", "").replace("/", "-") == artifactName
4047
);
4148

4249
const targetPackagePath = path.join(repoRoot, targetPackage.projectFolder);
4350
const packageJsonLocation = path.join(targetPackagePath, "package.json");
4451

45-
const packageJsonContents = await packageUtils.readFileJson(
46-
packageJsonLocation
47-
);
52+
const packageJsonContents = await packageUtils.readFileJson(packageJsonLocation);
4853

4954
const oldVersion = packageJsonContents.version;
5055
console.log(`${packageJsonContents.name}: ${oldVersion} -> ${newVersion}`);
@@ -60,13 +65,17 @@ async function main(argv) {
6065
};
6166
await packageUtils.writePackageJson(packageJsonLocation, updatedPackageJson);
6267

63-
await versionUtils.updatePackageConstants(
68+
await versionUtils.updatePackageConstants(targetPackagePath, packageJsonContents, newVersion);
69+
70+
const updateStatus = versionUtils.updateChangelog(
6471
targetPackagePath,
65-
packageJsonContents,
66-
newVersion
72+
artifactName,
73+
repoRoot,
74+
newVersion,
75+
false,
76+
true,
77+
releaseDate
6778
);
68-
69-
const updateStatus = versionUtils.updateChangelog(targetPackagePath, repoRoot, newVersion, false, true);
7079
if (!updateStatus) {
7180
process.exit(1);
7281
}

0 commit comments

Comments
 (0)