| File: Commands\CliPathInfo.cs | Web Access |
| Project: 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 Microsoft.DotNet.Cli.Utils; using Microsoft.DotNet.Configurer; using Microsoft.TemplateEngine.Abstractions; namespace Microsoft.TemplateEngine.Cli.Commands { internal sealed class CliPathInfo : IPathInfo { public CliPathInfo( ITemplateEngineHost host, IEnvironment environment, string? settingsLocation) { if (string.IsNullOrWhiteSpace(host.HostIdentifier)) { throw new ArgumentException($"{nameof(host.HostIdentifier)} of {nameof(host)} cannot be null or whitespace.", nameof(host)); } if (string.IsNullOrWhiteSpace(host.Version)) { throw new ArgumentException($"{nameof(host.Version)} of {nameof(host)} cannot be null or whitespace.", nameof(host)); } UserProfileDir = CliFolderPathCalculator.DotnetHomePath; GlobalSettingsDir = GetGlobalSettingsDir(settingsLocation); HostSettingsDir = Path.Combine(GlobalSettingsDir, host.HostIdentifier); HostVersionSettingsDir = Path.Combine(GlobalSettingsDir, host.HostIdentifier, host.Version); } public string UserProfileDir { get; } public string GlobalSettingsDir { get; } public string HostSettingsDir { get; } public string HostVersionSettingsDir { get; } private static string GetGlobalSettingsDir(string? settingsLocation) { var definedSettingsLocation = string.IsNullOrWhiteSpace(settingsLocation) ? Path.Combine(CliFolderPathCalculator.DotnetHomePath, ".templateengine") : settingsLocation; Reporter.Verbose.WriteLine($"Global Settings Location: {definedSettingsLocation}"); return definedSettingsLocation; } } }