2016-07-15 08:31:50 -07:00
// 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 10:34:50 -08:00
using System ;
2017-01-25 17:14:07 -08:00
using System.Collections.Generic ;
2017-01-24 21:59:18 -08:00
using System.Linq ;
2016-07-15 08:31:50 -07:00
using Microsoft.Build.Framework ;
2016-06-28 18:19:42 -05:00
using Microsoft.Build.Utilities ;
2016-07-26 00:29:59 -04:00
using Microsoft.DotNet.Cli.Build.Framework ;
2016-06-28 18:19:42 -05:00
namespace Microsoft.DotNet.Cli.Build
{
public abstract class DotNetTool : ToolTask
{
public DotNetTool ( )
{
2017-01-25 17:14:07 -08: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}");
// }
2016-06-28 18:19:42 -05:00
}
protected abstract string Command { get ; }
protected abstract string Args { get ; }
2017-01-25 17:14:07 -08:00
protected override Dictionary < string , string > EnvironmentOverride
{
get
{
return new EnvironmentFilter ( )
. GetEnvironmentVariableNamesToRemove ( )
. ToDictionary ( e = > e , e = > ( string ) null ) ;
}
}
2016-06-28 18:19:42 -05:00
public string WorkingDirectory { get ; set ; }
protected override string ToolName
{
2016-07-26 00:29:59 -04:00
get { return $"dotnet{Constants.ExeSuffix}" ; }
2016-06-28 18:19:42 -05:00
}
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 ) )
{
2016-06-29 02:41:38 -05:00
Log . LogError ( $"Could not find the Path to {ToolName}" ) ;
2016-06-28 18:19:42 -05:00
return string . Empty ;
}
return path ;
}
protected override string GetWorkingDirectory ( )
{
2017-01-25 17:14:07 -08:00
Log . LogMessage ( MessageImportance . High , "OVERRIDING " ) ;
foreach ( var ev in EnvironmentVariables )
{
Log . LogMessage ( MessageImportance . High , $"{ev}" ) ;
}
2016-06-28 18:19:42 -05:00
return WorkingDirectory ? ? base . GetWorkingDirectory ( ) ;
}
protected override string GenerateCommandLineCommands ( )
{
return $"{Command} {Args}" ;
}
protected override void LogToolCommand ( string message )
{
base . LogToolCommand ( $"{GetWorkingDirectory()}> {message}" ) ;
}
}
}