
The `CliFolderPathCalculator` class implements no interface and has no instance fields. This commit therefore makes it a static class.
59 lines
2.2 KiB
C#
59 lines
2.2 KiB
C#
// Copyright (c) .NET Foundation and contributors. All rights reserved.
|
|
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
|
|
using System;
|
|
using System.Linq;
|
|
using System.Runtime.InteropServices;
|
|
using System.Xml.Xsl;
|
|
using Microsoft.DotNet.Cli.Utils;
|
|
using Microsoft.DotNet.Configurer;
|
|
using Microsoft.Extensions.EnvironmentAbstractions;
|
|
|
|
namespace Microsoft.DotNet.ShellShim
|
|
{
|
|
internal static class EnvironmentPathFactory
|
|
{
|
|
public static IEnvironmentPath CreateEnvironmentPath(
|
|
bool hasSuperUserAccess = false,
|
|
IEnvironmentProvider environmentProvider = null)
|
|
{
|
|
if (environmentProvider == null)
|
|
{
|
|
environmentProvider = new EnvironmentProvider();
|
|
}
|
|
|
|
IEnvironmentPath environmentPath = new DoNothingEnvironmentPath();
|
|
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
|
|
{
|
|
environmentPath = new WindowsEnvironmentPath(
|
|
CliFolderPathCalculator.ToolsShimPath,
|
|
Reporter.Output,
|
|
environmentProvider);
|
|
}
|
|
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && hasSuperUserAccess)
|
|
{
|
|
environmentPath = new LinuxEnvironmentPath(
|
|
CliFolderPathCalculator.ToolsShimPathInUnix,
|
|
Reporter.Output,
|
|
environmentProvider,
|
|
new FileWrapper());
|
|
}
|
|
else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) && hasSuperUserAccess)
|
|
{
|
|
environmentPath = new OSXEnvironmentPath(
|
|
executablePath: CliFolderPathCalculator.ToolsShimPathInUnix,
|
|
reporter: Reporter.Output,
|
|
environmentProvider: environmentProvider,
|
|
fileSystem: new FileWrapper());
|
|
}
|
|
|
|
return environmentPath;
|
|
}
|
|
|
|
public static IEnvironmentPathInstruction CreateEnvironmentPathInstruction(
|
|
IEnvironmentProvider environmentProvider = null)
|
|
{
|
|
return CreateEnvironmentPath(true, environmentProvider);
|
|
}
|
|
}
|
|
}
|