File: Alias\AliasModel.cs
Web Access
Project: ..\..\..\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 Newtonsoft.Json;
 
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);
        }
 
        [JsonProperty]
        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;
        }
    }
}