Skip to content

Commit 345c9ce

Browse files
committed
Fixes issues with outputting module reference lists.
1 parent 18a568a commit 345c9ce

File tree

3 files changed

+15
-11
lines changed

3 files changed

+15
-11
lines changed

tools/NetCorePsd1Sync/NetCorePsd1Sync/NetCoreDefinitionGenerator.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,8 @@ private static ModuleReference CreateModuleReferenceFromHashtable(Hashtable data
151151
};
152152
}
153153

154+
private static List<ModuleReference> CreateModuleReferenceList(Hashtable data, string key) =>
155+
data.GetValueAsArrayOrDefault(key)?.OfType<Hashtable>().Select(CreateModuleReferenceFromHashtable).ToList();
154156

155157
public static PsDefinition CreateDefinitionFromExisting(Hashtable existingDefinition, PsDefinitionHeader existingHeader)
156158
{
@@ -162,7 +164,6 @@ public static PsDefinition CreateDefinitionFromExisting(Hashtable existingDefini
162164
var projectUri = existingPsData.GetValueAsStringOrDefault("ProjectUri");
163165
var iconUri = existingPsData.GetValueAsStringOrDefault("IconUri");
164166
var requireLicenseAcceptance = existingPsData.GetValueAsStringOrDefault("RequireLicenseAcceptance");
165-
var externalModuleDependencies = existingDefinition.GetValueAsArray("ExternalModuleDependencies");
166167
psData = new PsData
167168
{
168169
Tags = existingPsData.GetValueAsStringListOrDefault("Tags"),
@@ -172,13 +173,11 @@ public static PsDefinition CreateDefinitionFromExisting(Hashtable existingDefini
172173
ReleaseNotes = existingPsData.GetValueAsStringOrDefault("ReleaseNotes"),
173174
Prerelease = existingPsData.GetValueAsStringOrDefault("Prerelease"),
174175
RequireLicenseAcceptance = String.IsNullOrEmpty(requireLicenseAcceptance) ? (bool?)null : Boolean.Parse(requireLicenseAcceptance),
175-
ExternalModuleDependencies = externalModuleDependencies.Any() ? externalModuleDependencies.Cast<Hashtable>().Select(CreateModuleReferenceFromHashtable).ToList() : null
176+
ExternalModuleDependencies = CreateModuleReferenceList(existingPsData, "ExternalModuleDependencies")
176177
};
177178
}
178179

179180
var processorArchitecture = existingDefinition.GetValueAsStringOrDefault("ProcessorArchitecture");
180-
var requiredModules = existingDefinition.GetValueAsArray("RequiredModules");
181-
var moduleList = existingDefinition.GetValueAsArray("ModuleList");
182181
return new PsDefinition
183182
{
184183
ManifestHeader = existingHeader,
@@ -196,7 +195,7 @@ public static PsDefinition CreateDefinitionFromExisting(Hashtable existingDefini
196195
DotNetFrameworkVersion = existingDefinition.GetValueAsVersionOrDefault("DotNetFrameworkVersion"),
197196
ClrVersion = existingDefinition.GetValueAsVersionOrDefault("CLRVersion"),
198197
ProcessorArchitecture = processorArchitecture != null ? Enum.Parse<ProcessorArchitecture>(processorArchitecture) : (ProcessorArchitecture?)null,
199-
RequiredModules = requiredModules.Any() ? requiredModules.Cast<Hashtable>().Select(CreateModuleReferenceFromHashtable).ToList() : null,
198+
RequiredModules = CreateModuleReferenceList(existingDefinition, "RequiredModules"),
200199
RequiredAssemblies = existingDefinition.GetValueAsStringListOrDefault("RequiredAssemblies"),
201200
ScriptsToProcess = existingDefinition.GetValueAsStringListOrDefault("ScriptsToProcess"),
202201
TypesToProcess = existingDefinition.GetValueAsStringListOrDefault("TypesToProcess"),
@@ -207,7 +206,7 @@ public static PsDefinition CreateDefinitionFromExisting(Hashtable existingDefini
207206
VariablesToExport = existingDefinition.GetValueAsStringListOrDefault("VariablesToExport"),
208207
AliasesToExport = existingDefinition.GetValueAsStringListOrDefault("AliasesToExport"),
209208
DscResourcesToExport = existingDefinition.GetValueAsStringListOrDefault("DscResourcesToExport"),
210-
ModuleList = moduleList.Any() ? moduleList.Cast<Hashtable>().Select(CreateModuleReferenceFromHashtable).ToList() : null,
209+
ModuleList = CreateModuleReferenceList(existingDefinition, "ModuleList"),
211210
FileList = existingDefinition.GetValueAsStringListOrDefault("FileList"),
212211
PrivateData = new PrivateData { PsData = psData },
213212
HelpInfoUri = existingDefinition.GetValueAsStringOrDefault("HelpInfoURI"),

tools/NetCorePsd1Sync/NetCorePsd1Sync/Program.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,11 @@ public static void Main(string[] args)
5151
if(mode == UpdateVersion)
5252
{
5353
var newVersion = args.FirstOrDefault(a => Version.TryParse(a, out var _));
54-
_newVersion = Version.Parse(newVersion ?? "0.12.0");
54+
if (newVersion == null)
55+
{
56+
throw new ArgumentException($"Module update version must be provided");
57+
}
58+
_newVersion = Version.Parse(newVersion);
5559
}
5660
ModeMap[mode](rmPath);
5761
}
@@ -77,7 +81,7 @@ private static void UpdateModuleVersions(string rmPath, Version newVersion)
7781
Console.WriteLine($"Updating {netCoreFilePath} to version {newVersion}");
7882
var netCoreDefinition = CreateDefinitionFromExisting(netCoreHashtable, new PsDefinitionHeader { ModuleName = headerModuleName, Author = headerAuthor, Date = headerDate });
7983
netCoreDefinition.ModuleVersion = newVersion;
80-
if (netCoreDefinition.RequiredModules.Any(rm => rm.ModuleName == "AzureRM.Profile.Netcore"))
84+
if (netCoreDefinition.RequiredModules?.Any(rm => rm.ModuleName == "AzureRM.Profile.Netcore") ?? false)
8185
{
8286
netCoreDefinition.RequiredModules.First(rm => rm.ModuleName == "AzureRM.Profile.Netcore").ModuleVersion = newVersion;
8387
}

tools/NetCorePsd1Sync/NetCorePsd1Sync/Utility/HashtableExtensions.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,9 @@ public static Version GetValueAsVersionOrDefault(this Hashtable hashtable, strin
3434
return version;
3535
}
3636

37-
public static object[] GetValueAsArray(this Hashtable hashtable, string key) => hashtable[key] as object[] ?? new object[]{};
37+
public static object[] GetValueAsArray(this Hashtable hashtable, string key) => GetValueAsArrayOrDefault(hashtable, key) ?? new object[]{};
38+
39+
public static object[] GetValueAsArrayOrDefault(this Hashtable hashtable, string key) => hashtable[key] as object[];
3840

3941
public static Hashtable GetValueAsHashtable(this Hashtable hashtable, string key) => hashtable[key] as Hashtable ?? new Hashtable();
4042

@@ -46,8 +48,7 @@ public static List<string> GetValueAsStringListOrDefault(this Hashtable hashtabl
4648
{
4749
return new List<string> { stringValue };
4850
}
49-
var stringList = hashtable.GetValueAsArray(key).OfType<string>().ToList();
50-
return stringList.Any() ? stringList : null;
51+
return hashtable.GetValueAsArrayOrDefault(key)?.OfType<string>().ToList();
5152
}
5253

5354
public static bool Any(this Hashtable hashtable) => hashtable.Count > 0;

0 commit comments

Comments
 (0)