diff --git a/CHANGELIST.md b/CHANGELIST.md index 8516c5be..5b0b1eb2 100644 --- a/CHANGELIST.md +++ b/CHANGELIST.md @@ -5,6 +5,7 @@ - Fix XboxOne/XboxSX Filename bug (Deterous) - Trim PIC for XboxOne/XboxSX (Deterous) - Get volume label from UIC outputs +- Add site code listing to Check ### 3.1.8 (2024-05-09) diff --git a/MPF.Check/Program.cs b/MPF.Check/Program.cs index de8dee4c..16822fa4 100644 --- a/MPF.Check/Program.cs +++ b/MPF.Check/Program.cs @@ -99,6 +99,7 @@ namespace MPF.Check Console.WriteLine(); Console.WriteLine("Standalone Options:"); Console.WriteLine("-h, -? Show this help text"); + Console.WriteLine("-lc, --listcodes List supported comment/content site codes"); Console.WriteLine("-lm, --listmedia List supported media types"); Console.WriteLine("-ls, --listsystems List supported system types"); Console.WriteLine("-lp, --listprograms List supported dumping program outputs"); diff --git a/MPF.Core/Utilities/EnumExtensions.cs b/MPF.Core/Utilities/EnumExtensions.cs index d44acfb2..e7d45acf 100644 --- a/MPF.Core/Utilities/EnumExtensions.cs +++ b/MPF.Core/Utilities/EnumExtensions.cs @@ -45,5 +45,43 @@ namespace MPF.Core.Utilities return programs; } + + /// + /// List all site codes with their short usable names + /// + public static List ListSiteCodes() + { + var siteCodes = new List(); + + foreach (var val in Enum.GetValues(typeof(SiteCode))) + { + string? shortName = ((SiteCode?)val).ShortName()?.TrimEnd(':'); + string? longName = ((SiteCode?)val).LongName()?.TrimEnd(':'); + bool multiline = ((SiteCode?)val).IsMultiLine(); + + // Invalid codes should be skipped + if (shortName == null || longName == null) + continue; + + // Handle site tags + string siteCode; + if (shortName == longName) + siteCode = "***".PadRight(16, ' '); + else + siteCode = shortName.PadRight(16, ' '); + + // Handle expanded tags + siteCode += longName.PadRight(32, ' '); + + // Include multiline indicator if necessary + if (multiline) + siteCode += "[Multiline]"; + + // Add the formatted site code + siteCodes.Add(siteCode); + } + + return siteCodes; + } } } diff --git a/MPF.Core/Utilities/OptionsLoader.cs b/MPF.Core/Utilities/OptionsLoader.cs index 6d873067..b7a5e6aa 100644 --- a/MPF.Core/Utilities/OptionsLoader.cs +++ b/MPF.Core/Utilities/OptionsLoader.cs @@ -26,7 +26,17 @@ namespace MPF.Core.Utilities return false; // List options - if (args[0] == "-lm" || args[0] == "--listmedia") + if (args[0] == "-lc" || args[0] == "--listcodes") + { + Console.WriteLine("Supported Site Codes:"); + foreach (string siteCode in EnumExtensions.ListSiteCodes()) + { + Console.WriteLine(siteCode); + } + Console.ReadLine(); + return true; + } + else if (args[0] == "-lm" || args[0] == "--listmedia") { Console.WriteLine("Supported Media Types:"); foreach (string mediaType in Extensions.ListMediaTypes())