/// <summary> /// Return a list of profiles for the Windows Terminal /// </summary> /// <param name="terminal">Windows Terminal package</param> /// <param name="settingsJson">Content of the settings JSON file of the Terminal</param> public static List <TerminalProfile> ParseSettings(TerminalPackage terminal, string settingsJson) { var profiles = new List <TerminalProfile>(); var options = new JsonDocumentOptions { CommentHandling = JsonCommentHandling.Skip, }; var json = JsonDocument.Parse(settingsJson, options); json.RootElement.TryGetProperty("profiles", out JsonElement profilesElement); if (profilesElement.ValueKind != JsonValueKind.Object) { return(profiles); } profilesElement.TryGetProperty("list", out JsonElement profilesList); if (profilesList.ValueKind != JsonValueKind.Array) { return(profiles); } foreach (var profile in profilesList.EnumerateArray()) { profiles.Add(ParseProfile(terminal, profile)); } return(profiles); }
public void ParseSettingsTest(string file) { var terminal = new TerminalPackage(string.Empty, new Version(), string.Empty, string.Empty, string.Empty); var settingsPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, file); var settings = File.ReadAllText(settingsPath); var profiles = TerminalHelper.ParseSettings(terminal, settings); Assert.AreEqual(profiles.Count, 4); }
public void ParseProfilesTest(string json, string identifier, string name, bool hidden) { var profileElement = JsonDocument.Parse(json).RootElement; var terminal = new TerminalPackage(string.Empty, new Version(), string.Empty, string.Empty, string.Empty); var profile = TerminalHelper.ParseProfile(terminal, profileElement); var expectedIdentifier = identifier != null ? new Guid(identifier) : null as Guid?; Assert.AreEqual(profile.Terminal, terminal); Assert.AreEqual(profile.Identifier, expectedIdentifier); Assert.AreEqual(profile.Name, name); Assert.AreEqual(profile.Hidden, hidden); }
/// <summary> /// Return a profile for the Windows Terminal /// </summary> /// <param name="terminal">Windows Terminal package</param> /// <param name="profileElement">Profile from the settings JSON file</param> public static TerminalProfile ParseProfile(TerminalPackage terminal, JsonElement profileElement) { profileElement.TryGetProperty("name", out JsonElement nameElement); var name = nameElement.ValueKind == JsonValueKind.String ? nameElement.GetString() : null; profileElement.TryGetProperty("hidden", out JsonElement hiddenElement); var hidden = (hiddenElement.ValueKind == JsonValueKind.False || hiddenElement.ValueKind == JsonValueKind.True) && hiddenElement.GetBoolean(); profileElement.TryGetProperty("guid", out JsonElement guidElement); var guid = guidElement.ValueKind == JsonValueKind.String ? Guid.Parse(guidElement.GetString()) : null as Guid?; return(new TerminalProfile(terminal, name, guid, hidden)); }