Dotnet publish tests
This commit is contained in:
parent
cd357cb273
commit
07eb7ef28f
43 changed files with 1826 additions and 129 deletions
|
@ -0,0 +1,107 @@
|
|||
// 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.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.DotNet.Cli.Utils;
|
||||
using Microsoft.DotNet.ProjectModel;
|
||||
using Microsoft.DotNet.Tools.Test.Utilities;
|
||||
|
||||
namespace Microsoft.DotNet.Tools.Publish.Tests
|
||||
{
|
||||
public sealed class PublishCommand : TestCommand
|
||||
{
|
||||
private Project _project;
|
||||
private string _path;
|
||||
private string _framework;
|
||||
private string _runtime;
|
||||
private string _config;
|
||||
private string _output;
|
||||
|
||||
public PublishCommand(string projectPath, string framework="", string runtime="", string output="", string config="")
|
||||
: base("dotnet")
|
||||
{
|
||||
_path = projectPath;
|
||||
_project = ProjectReader.GetProject(projectPath);
|
||||
_framework = framework;
|
||||
_runtime = runtime;
|
||||
_output = output;
|
||||
_config = config;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public override CommandResult Execute(string args="")
|
||||
{
|
||||
args = $"publish {BuildArgs()} {args}";
|
||||
return base.Execute(args);
|
||||
}
|
||||
|
||||
public string ProjectName
|
||||
{
|
||||
get
|
||||
{
|
||||
return _project.Name;
|
||||
}
|
||||
}
|
||||
|
||||
private string BuildRelativeOutputPath()
|
||||
{
|
||||
// lets try to build an approximate output path
|
||||
string config = string.IsNullOrEmpty(_config) ? "Debug" : _config;
|
||||
string framework = string.IsNullOrEmpty(_framework) ?
|
||||
_project.GetTargetFrameworks().First().FrameworkName.GetShortFolderName() : _framework;
|
||||
string runtime = string.IsNullOrEmpty(_runtime) ? RuntimeIdentifier.Current : _runtime;
|
||||
string output = Path.Combine("bin", config, framework, runtime);
|
||||
|
||||
return output;
|
||||
}
|
||||
|
||||
public DirectoryInfo GetOutputDirectory()
|
||||
{
|
||||
if (!string.IsNullOrEmpty(_output))
|
||||
{
|
||||
return new DirectoryInfo(_output);
|
||||
}
|
||||
|
||||
string output = Path.Combine(_project.ProjectDirectory, BuildRelativeOutputPath());
|
||||
return new DirectoryInfo(output);
|
||||
}
|
||||
|
||||
public string GetOutputExecutable()
|
||||
{
|
||||
var result = _project.Name;
|
||||
result += RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? ".exe" : "";
|
||||
return result;
|
||||
}
|
||||
|
||||
private string BuildArgs()
|
||||
{
|
||||
return $"{_path} {GetFrameworkOption()} {GetRuntimeOption()} {GetOutputOption()} {GetConfigOption()}";
|
||||
}
|
||||
|
||||
private string GetFrameworkOption()
|
||||
{
|
||||
return string.IsNullOrEmpty(_framework) ? "" : $"-f {_framework}";
|
||||
}
|
||||
|
||||
private string GetRuntimeOption()
|
||||
{
|
||||
return string.IsNullOrEmpty(_runtime) ? "" : $"-r {_runtime}";
|
||||
}
|
||||
|
||||
private string GetOutputOption()
|
||||
{
|
||||
return string.IsNullOrEmpty(_output) ? "" : $"-o {_output}";
|
||||
}
|
||||
|
||||
private string GetConfigOption()
|
||||
{
|
||||
return string.IsNullOrEmpty(_config) ? "" : $"-c {_output}";
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue