File: Alias\AliasModel.cs
Web Access
Project: src\src\sdk\src\Cli\Microsoft.TemplateEngine.Cli\Microsoft.TemplateEngine.Cli.csproj (Microsoft.TemplateEngine.Cli)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using System.Text.Json.Serialization;

namespace Microsoft.TemplateEngine.Cli.Alias
{
    internal class AliasModel
    {
        internal AliasModel()
            : this(new Dictionary<string, IReadOnlyList<string>>())
        {
        }

        internal AliasModel(IReadOnlyDictionary<string, IReadOnlyList<string>> commandAliases)
        {
            CommandAliases = new Dictionary<string, IReadOnlyList<string>>(commandAliases.ToDictionary(x => x.Key, x => x.Value), StringComparer.OrdinalIgnoreCase);
        }

        [JsonInclude]
        internal Dictionary<string, IReadOnlyList<string>> CommandAliases { get; set; }

        internal void AddCommandAlias(string aliasName, IReadOnlyList<string> aliasTokens)
        {
            CommandAliases.Add(aliasName, aliasTokens);
        }

        internal bool TryRemoveCommandAlias(string aliasName, out IReadOnlyList<string>? aliasTokens)
        {
            if (CommandAliases.TryGetValue(aliasName, out aliasTokens))
            {
                CommandAliases.Remove(aliasName);
                return true;
            }

            return false;
        }
    }
}