dotnet-installer/build_projects/dotnet-cli-build/DotNetTool.cs
Eric Erhardt aff23d00f4 Implement RestorePackages in MSBuild.
This adds the DotNetTool custom task, with `dotnet restore` implemented.
2016-06-28 18:22:15 -05:00

85 lines
2 KiB
C#

using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
namespace Microsoft.DotNet.Cli.Build
{
public abstract class DotNetTool : ToolTask
{
private const string ExeName = "dotnet.exe";
public DotNetTool()
{
}
protected abstract string Command { get; }
protected abstract string Args { get; }
public string WorkingDirectory { get; set; }
protected override string ToolName
{
get { return ExeName; }
}
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 {ExeName}");
return string.Empty;
}
return path;
}
protected override string GetWorkingDirectory()
{
return WorkingDirectory ?? base.GetWorkingDirectory();
}
protected override string GenerateCommandLineCommands()
{
return $"{Command} {Args}";
}
protected override void LogToolCommand(string message)
{
base.LogToolCommand($"{GetWorkingDirectory()}> {message}");
}
}
public class DotNetRestore : DotNetTool
{
protected override string Command
{
get { return "restore"; }
}
protected override string Args
{
get { return $"{GetVerbosity()}"; }
}
public string Verbosity { get; set; }
private string GetVerbosity()
{
if (!string.IsNullOrEmpty(Verbosity))
{
return $"--verbosity {Verbosity}";
}
return null;
}
}
}