Skip to content

Commit 793d0a1

Browse files
author
Sanju Yadav
committed
Code review fixes
1 parent 3a79c7f commit 793d0a1

File tree

4 files changed

+20
-66
lines changed

4 files changed

+20
-66
lines changed

BuildConfigGen/Program.cs

Lines changed: 14 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -647,7 +647,7 @@ private static void MainUpdateTask(
647647
var targetConfigsWithMergeToBaseOrderedFirst = targetConfigs.OrderBy(x => x.mergeToBase ? 0 : 1);
648648

649649
var defaultConfig = targetConfigs.FirstOrDefault(x => x.isDefault)
650-
?? throw new ArgumentException($"There is no default config for task {task} which is required if {nameof(useSemverBuildConfig)} is true");
650+
?? throw new Exception($"There is no default config for task {task}");
651651

652652
foreach (var config in targetConfigsWithMergeToBaseOrderedFirst)
653653
{
@@ -751,10 +751,10 @@ private static void MainUpdateTask(
751751
WriteWIFInputTaskJson(taskOutput, config, "task.json", isLoc: false);
752752
WriteWIFInputTaskJson(taskOutput, config, "task.loc.json", isLoc: true);
753753

754-
if (useSemverBuildConfig)
754+
if (useSemverBuildConfig && !config.mergeToBase)
755755
{
756-
WriteTaskJsonWithSemverConfig(taskOutput, taskVersionState, defaultConfig, config, "task.json", existingLocalPackageVersion);
757-
WriteTaskJsonWithSemverConfig(taskOutput, taskVersionState, defaultConfig, config, "task.loc.json", existingLocalPackageVersion);
756+
WriteTaskJson(taskOutput, taskVersionState, config, "task.json", existingLocalPackageVersion, useSemverBuildConfig: true, defaultConfig: defaultConfig);
757+
WriteTaskJson(taskOutput, taskVersionState, config, "task.loc.json", existingLocalPackageVersion, useSemverBuildConfig: true, defaultConfig: defaultConfig);
758758
}
759759
else if (!config.mergeToBase)
760760
{
@@ -1087,62 +1087,12 @@ private static void PreprocessIfExtensionEnabledInConfig(string file, Config.Con
10871087
return outputTaskNodeObject["_buildConfigMapping"]?.AsObject()?[Config.LocalPackages.constMappingKey]?.GetValue<string>();
10881088
}
10891089

1090-
private static void WriteTaskJson(string taskPath, TaskStateStruct taskState, Config.ConfigRecord config, string fileName, string? existingLocalPackageVersion)
1091-
{
1092-
string outputTaskPath = Path.Combine(taskPath, fileName);
1093-
JsonNode outputTaskNode = JsonNode.Parse(ensureUpdateModeVerifier!.FileReadAllText(outputTaskPath))!;
1094-
1095-
outputTaskNode["version"]!["Major"] = taskState.configTaskVersionMapping[config].Major;
1096-
outputTaskNode["version"]!["Minor"] = taskState.configTaskVersionMapping[config].Minor;
1097-
outputTaskNode["version"]!["Patch"] = taskState.configTaskVersionMapping[config].Patch;
1098-
1099-
var outputTaskNodeObject = outputTaskNode.AsObject();
1100-
outputTaskNodeObject.Remove("_buildConfigMapping");
1101-
1102-
bool anyVersionsUpdatedExceptForGlobal = taskState.versionsUpdated.Where(x => !x.useGlobalVersion).Any();
1103-
1104-
JsonObject configMapping = new JsonObject();
1105-
var configTaskVersionMappingSortedByConfig = taskState.configTaskVersionMapping.OrderBy(x => x.Key.name);
1106-
foreach (var cfg in configTaskVersionMappingSortedByConfig)
1107-
{
1108-
if (!config.useGlobalVersion && cfg.Key.useGlobalVersion && !anyVersionsUpdatedExceptForGlobal)
1109-
{
1110-
// To minimize noise in version control when adding the globalVersion,
1111-
// unless the config being generated is the globalVersion (written to _generated_local),
1112-
// if no other versions are updated other than the globalVersion,
1113-
// don't change the global version in the existing generated file.
1114-
if (existingLocalPackageVersion != null)
1115-
{
1116-
configMapping.Add(new(cfg.Key.constMappingKey, existingLocalPackageVersion));
1117-
}
1118-
}
1119-
else
1120-
{
1121-
configMapping.Add(new(cfg.Key.constMappingKey, cfg.Value.ToString()));
1122-
}
1123-
}
1124-
1125-
outputTaskNode.AsObject().Add("_buildConfigMapping", configMapping);
1126-
1127-
ensureUpdateModeVerifier!.WriteAllText(outputTaskPath, outputTaskNode.ToJsonString(jso), suppressValidationErrorIfTargetPathDoesntExist: false);
1128-
}
1129-
11301090
/// <summary>
1131-
/// This uses the same major.minor.patch for all build configuration tasks, but the "build" suffix of semver is different, and directly corresponds to the name.
1132-
/// We no longer populate the '_buildConfigMapping' property of the task.json, since server won't expect this property to be set.
1091+
/// Writes task.json with version information and build config mapping.
1092+
/// When useSemverBuildConfig is true, uses the same major.minor.patch for all build configuration tasks,
1093+
/// but the "build" suffix of semver is different and directly corresponds to the config name.
11331094
/// </summary>
1134-
/// <param name="taskPath"></param>
1135-
/// <param name="taskState"></param>
1136-
/// <param name="defaultConfig"></param>
1137-
/// <param name="config"></param>
1138-
/// <param name="fileName"></param>
1139-
/// <param name="existingLocalPackageVersion"></param>
1140-
private static void WriteTaskJsonWithSemverConfig(string taskPath,
1141-
TaskStateStruct taskState,
1142-
Config.ConfigRecord defaultConfig,
1143-
Config.ConfigRecord config,
1144-
string fileName,
1145-
string? existingLocalPackageVersion)
1095+
private static void WriteTaskJson(string taskPath, TaskStateStruct taskState, Config.ConfigRecord config, string fileName, string? existingLocalPackageVersion, bool useSemverBuildConfig = false, Config.ConfigRecord? defaultConfig = null)
11461096
{
11471097
string outputTaskPath = Path.Combine(taskPath, fileName);
11481098
JsonNode outputTaskNode = JsonNode.Parse(ensureUpdateModeVerifier!.FileReadAllText(outputTaskPath))!;
@@ -1151,7 +1101,8 @@ private static void WriteTaskJsonWithSemverConfig(string taskPath,
11511101
outputTaskNode["version"]!["Minor"] = taskState.configTaskVersionMapping[config].Minor;
11521102
outputTaskNode["version"]!["Patch"] = taskState.configTaskVersionMapping[config].Patch;
11531103

1154-
if (defaultConfig != config)
1104+
// Add semver build suffix if using semver config and not the default config
1105+
if (useSemverBuildConfig && defaultConfig != null && defaultConfig != config)
11551106
{
11561107
outputTaskNode["version"]!["Build"] = config.constMappingKey;
11571108
}
@@ -1167,6 +1118,10 @@ private static void WriteTaskJsonWithSemverConfig(string taskPath,
11671118
{
11681119
if (!config.useGlobalVersion && cfg.Key.useGlobalVersion && !anyVersionsUpdatedExceptForGlobal)
11691120
{
1121+
// To minimize noise in version control when adding the globalVersion,
1122+
// unless the config being generated is the globalVersion (written to _generated_local),
1123+
// if no other versions are updated other than the globalVersion,
1124+
// don't change the global version in the existing generated file.
11701125
if (existingLocalPackageVersion != null)
11711126
{
11721127
configMapping.Add(new(cfg.Key.constMappingKey, existingLocalPackageVersion));
@@ -1400,7 +1355,6 @@ private static void UpdateVersionsForTask(string task, TaskStateStruct taskState
14001355
string currentDir = Environment.CurrentDirectory;
14011356
string gitRootPath = GetTasksRootPath(currentDir);
14021357
string taskTargetPath = Path.Combine(gitRootPath, "Tasks", task);
1403-
14041358
if (!Directory.Exists(taskTargetPath))
14051359
{
14061360
throw new Exception($"expected {taskTargetPath} to exist!");
@@ -1449,7 +1403,6 @@ private static void UpdateVersionsForTask(string task, TaskStateStruct taskState
14491403
{
14501404
throw new Exception($"Multiple configs for task being merged. This is not supported. task={task} mergingConfig.name={mergingConfig.name}");
14511405
}
1452-
14531406
// versionMap contains a version that needs to be merged to base
14541407
allConfigsMappedAndValid = false;
14551408
mergingConfig = config;
@@ -1568,7 +1521,6 @@ private static void UpdateVersionsForTask(string task, TaskStateStruct taskState
15681521
else
15691522
{
15701523
TaskVersion targetVersion;
1571-
15721524
do
15731525
{
15741526
targetVersion = baseVersion.CloneWithPatch(baseVersion.Patch + offset);

BuildConfigGen/VersionParser.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
public static class VersionParser
1+
using System.Diagnostics.CodeAnalysis;
2+
3+
public static class VersionParser
24
{
35
/// <summary>
46
/// Splits the full Semver 2.0 string into individual string components: version, pre-release version, and build version.
@@ -11,7 +13,7 @@
1113
/// <returns></returns>
1214
public static bool TryParseVersionComponents(
1315
string fullVersion,
14-
out string? versionSegment,
16+
[NotNullWhen(returnValue: true)] out string? versionSegment,
1517
out string? preReleaseSegment,
1618
out string? buildSegment)
1719
{

Tasks/PowerShellV2/task.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"version": {
1919
"Major": 2,
2020
"Minor": 259,
21-
"Patch": 1
21+
"Patch": 0
2222
},
2323
"releaseNotes": "Script task consistency. Added support for macOS and Linux.",
2424
"minimumAgentVersion": "2.115.0",

Tasks/PowerShellV2/task.loc.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"version": {
1919
"Major": 2,
2020
"Minor": 259,
21-
"Patch": 1
21+
"Patch": 0
2222
},
2323
"releaseNotes": "ms-resource:loc.releaseNotes",
2424
"minimumAgentVersion": "2.115.0",

0 commit comments

Comments
 (0)