dotnet-installer/build_projects/dotnet-cli-build/DotNetTool.cs

101 lines
2.8 KiB
C#
Raw Normal View History

// 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.
2017-01-25 18:34:50 +00:00
using System;
2017-01-26 01:14:07 +00:00
using System.Collections.Generic;
2017-01-25 05:59:18 +00:00
using System.Linq;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using Microsoft.DotNet.Cli.Build.Framework;
namespace Microsoft.DotNet.Cli.Build
{
public abstract class DotNetTool : ToolTask
{
public DotNetTool()
{
2017-01-26 01:14:07 +00:00
// var ev2r = new EnvironmentFilter()
// .GetEnvironmentVariableNamesToRemove();
// foreach (var ev in ev2r)
// {
// Console.WriteLine($"EV {ev}");
// }
// EnvironmentVariables = ev2r
// .Select(e => $"{e}=")
// .ToArray();
// foreach (var ev in EnvironmentVariables)
// {
// Console.WriteLine($"EV {ev}");
// }
}
protected abstract string Command { get; }
protected abstract string Args { get; }
2017-01-26 01:14:07 +00:00
protected override Dictionary<string, string> EnvironmentOverride
{
get
{
return new EnvironmentFilter()
.GetEnvironmentVariableNamesToRemove()
.ToDictionary(e => e, e => (string)null);
}
}
public string WorkingDirectory { get; set; }
protected override string ToolName
{
get { return $"dotnet{Constants.ExeSuffix}"; }
}
protected override MessageImportance StandardOutputLoggingImportance
{
get { return MessageImportance.High; } // or else the output doesn't get logged by default
}
protected override string GenerateFullPathToTool()
{
string path = ToolPath;
// if ToolPath was not provided by the MSBuild script
if (string.IsNullOrEmpty(path))
{
Log.LogError($"Could not find the Path to {ToolName}");
return string.Empty;
}
return path;
}
protected override string GetWorkingDirectory()
{
2017-01-26 01:14:07 +00:00
Log.LogMessage(MessageImportance.High, "OVERRIDING ");
foreach (var ev in EnvironmentVariables)
{
Log.LogMessage(MessageImportance.High, $"{ev}");
}
return WorkingDirectory ?? base.GetWorkingDirectory();
}
protected override string GenerateCommandLineCommands()
{
return $"{Command} {Args}";
}
protected override void LogToolCommand(string message)
{
base.LogToolCommand($"{GetWorkingDirectory()}> {message}");
}
}
}