Skip to content

Commit

Permalink
Build: Use Platform.IsWindows throughout build scripts
Browse files Browse the repository at this point in the history
Note that the only place still using IsRunningOnWindows() is in 'runhelpers.cake', because using platform
there would create a circular dependency without further refactoring.
  • Loading branch information
DustinCampbell committed Jul 24, 2017
1 parent bf03f6b commit 68c9641
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 39 deletions.
37 changes: 19 additions & 18 deletions build.cake
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,19 @@
using System.ComponentModel;
using System.Net;

var platform = GetCurrentPlatform();

// Arguments
var target = Argument("target", "Default");
var configuration = Argument("configuration", "Release");
var testConfiguration = Argument("test-configuration", "Debug");
var installFolder = Argument("install-path",
CombinePaths(Environment.GetEnvironmentVariable(IsRunningOnWindows() ? "USERPROFILE" : "HOME"), ".omnisharp", "local"));
CombinePaths(Environment.GetEnvironmentVariable(platform.IsWindows ? "USERPROFILE" : "HOME"), ".omnisharp", "local"));
var requireArchive = HasArgument("archive");
var useGlobalDotNetSdk = HasArgument("use-global-dotnet-sdk");

Log.Context = Context;

var platform = GetCurrentPlatform();
var env = new BuildEnvironment(platform, useGlobalDotNetSdk);
var buildPlan = BuildPlan.Load(env);

Expand Down Expand Up @@ -69,7 +70,7 @@ Task("PopulateRuntimes")
.IsDependentOn("BuildEnvironment")
.Does(() =>
{
if (IsRunningOnWindows() && string.Equals(Environment.GetEnvironmentVariable("APPVEYOR"), "True"))
if (platform.IsWindows && string.Equals(Environment.GetEnvironmentVariable("APPVEYOR"), "True"))
{
buildPlan.SetTargetRids(
"default", // To allow testing the published artifact
Expand Down Expand Up @@ -159,7 +160,7 @@ void InstallDotNetSdk(BuildEnvironment env, BuildPlan plan, string version, stri
client.DownloadFile(url, scriptFilePath);
}

if (!IsRunningOnWindows())
if (!env.Platform.IsWindows)
{
Run("chmod", $"+x '{scriptFilePath}'");
}
Expand Down Expand Up @@ -304,11 +305,11 @@ Task("PrepareTestAssets")

void BuildProject(BuildEnvironment env, string projectName, string projectFilePath, string configuration)
{
var command = IsRunningOnWindows()
var command = env.Platform.IsWindows
? env.DotNetCommand
: env.ShellCommand;

var arguments = IsRunningOnWindows()
var arguments = env.Platform.IsWindows
? $"build \"{projectFilePath}\" --configuration {configuration} /v:d"
: $"{env.ShellArgument} msbuild \"{projectFilePath}\" /p:Configuration={configuration} /v:d";

Expand Down Expand Up @@ -401,7 +402,7 @@ Task("Test")
var logFile = CombinePaths(env.Folders.ArtifactsLogs, $"{testProject}-desktop-result.xml");
var arguments = $"\"{targetPath}\" -parallel none -xml \"{logFile}\" -notrait category=failing";

if (IsRunningOnWindows())
if (platform.IsWindows)
{
Run(xunitInstancePath, arguments, instanceFolder)
.ExceptionOnError($"Test {testProject} failed for net46");
Expand All @@ -417,18 +418,18 @@ Task("Test")
}
});

bool IsNetFrameworkOnUnix(string framework)
bool IsNetFrameworkOnUnix(BuildEnvironment env, string framework)
{
return !IsRunningOnWindows()
return !env.Platform.IsWindows
&& !framework.StartsWith("netcore")
&& !framework.StartsWith("netstandard");
}

string GetPublishArguments(string projectFileName, string rid, string framework, string configuration, string outputFolder)
string GetPublishArguments(BuildEnvironment env, string projectFileName, string rid, string framework, string configuration, string outputFolder)
{
var argList = new List<string>();

if (IsNetFrameworkOnUnix(framework))
if (IsNetFrameworkOnUnix(env, framework))
{
argList.Add($"\"{projectFileName}\"");
argList.Add("/t:Publish");
Expand Down Expand Up @@ -493,13 +494,13 @@ Task("OnlyPublish")
{
var outputFolder = CombinePaths(env.Folders.ArtifactsPublish, project, runtime, framework);

var command = IsNetFrameworkOnUnix(framework)
var command = IsNetFrameworkOnUnix(env, framework)
? env.ShellCommand
: env.DotNetCommand;

var args = GetPublishArguments(projectFileName, rid, framework, configuration, outputFolder);
var args = GetPublishArguments(env, projectFileName, rid, framework, configuration, outputFolder);

args = IsNetFrameworkOnUnix(framework)
args = IsNetFrameworkOnUnix(env, framework)
? $"{env.ShellArgument} msbuild {args}"
: args;

Expand All @@ -512,21 +513,21 @@ Task("OnlyPublish")
DirectoryHelper.Copy($"{env.Folders.MSBuildBase}-{framework}", CombinePaths(outputFolder, "msbuild"));

// For OSX/Linux net46 builds, copy the MSBuild libraries built for Mono.
if (!IsRunningOnWindows() && framework == "net46")
if (!platform.IsWindows && framework == "net46")
{
DirectoryHelper.Copy($"{env.Folders.MonoMSBuildLib}", outputFolder);
}

if (requireArchive)
{
Package(runtime, framework, outputFolder, env.Folders.ArtifactsPackage, buildPlan.MainProject.ToLower());
Package(env, runtime, framework, outputFolder, env.Folders.ArtifactsPackage, buildPlan.MainProject.ToLower());
}
}

completed.Add(runtime);
}

CreateRunScript(CombinePaths(env.Folders.ArtifactsPublish, project, "default"), env.Folders.ArtifactsScripts);
CreateRunScript(env, CombinePaths(env.Folders.ArtifactsPublish, project, "default"), env.Folders.ArtifactsScripts);
});

/// <summary>
Expand Down Expand Up @@ -620,7 +621,7 @@ Task("Install")
foreach (string file in System.IO.Directory.GetFiles(outputFolder, "*", SearchOption.AllDirectories))
System.IO.File.Copy(file, CombinePaths(targetFolder, file.Substring(outputFolder.Length + 1)), true);
}
CreateRunScript(installFolder, env.Folders.ArtifactsScripts);
CreateRunScript(env, installFolder, env.Folders.ArtifactsScripts);
});

/// <summary>
Expand Down
11 changes: 6 additions & 5 deletions scripts/archiving.cake
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#load "common.cake"
#load "runhelpers.cake"

using System.IO.Compression;
Expand Down Expand Up @@ -61,10 +62,10 @@ string GetBuildIdentifier(string runtime, string framework)
/// <param name="runtime">The RID</param>
/// <param name="contentFolder">The folder containing the files to package</param>
/// <param name="archiveName">The target archive name (without extension)</param>
void DoArchive(string runtime, string contentFolder, string archiveName)
void DoArchive(BuildEnvironment env, string runtime, string contentFolder, string archiveName)
{
// On all platforms use ZIP for Windows runtimes
if (runtime.Contains("win") || (runtime.Equals("default") && IsRunningOnWindows()))
if (runtime.Contains("win") || (runtime.Equals("default") && env.Platform.IsWindows))
{
var zipFile = $"{archiveName}.zip";
Zip(contentFolder, zipFile);
Expand All @@ -74,7 +75,7 @@ void DoArchive(string runtime, string contentFolder, string archiveName)
{
var tarFile = $"{archiveName}.tar.gz";
// Use 7z to create TAR.GZ on Windows
if (IsRunningOnWindows())
if (env.Platform.IsWindows)
{
var tempFile = $"{archiveName}.tar";
try
Expand Down Expand Up @@ -107,11 +108,11 @@ void DoArchive(string runtime, string contentFolder, string archiveName)
/// <param name="contentFolder">The folder containing the files to package</param>
/// <param name="packageFolder">The destination folder for the archive</param>
/// <param name="projectName">The project name</param>
void Package(string runtime, string framework, string contentFolder, string packageFolder, string projectName)
void Package(BuildEnvironment env, string runtime, string framework, string contentFolder, string packageFolder, string projectName)
{
var buildIdentifier = GetBuildIdentifier(runtime, framework);
if (buildIdentifier != null)
{
DoArchive(runtime, contentFolder, $"{packageFolder}/{projectName}-{buildIdentifier}");
DoArchive(env, runtime, contentFolder, $"{packageFolder}/{projectName}-{buildIdentifier}");
}
}
28 changes: 14 additions & 14 deletions scripts/artifacts.cake
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,17 @@ using System.Collections.Generic;
/// Generate the scripts which target the OmniSharp binaries.
/// </summary>
/// <param name="outputRoot">The root folder where the publised (or installed) binaries are located</param>
void CreateRunScript(string outputRoot, string scriptFolder)
void CreateRunScript(BuildEnvironment env, string outputRoot, string scriptFolder)
{
CreateScript(outputRoot, scriptFolder, "net46");
CreateScript(outputRoot, scriptFolder, "netcoreapp1.1");
CreateScript(env, outputRoot, scriptFolder, "net46");
CreateScript(env, outputRoot, scriptFolder, "netcoreapp1.1");
}

private void CreateScript(string outputRoot, string scriptFolder, string framework)
private void CreateScript(BuildEnvironment env, string outputRoot, string scriptFolder, string framework)
{
var scriptPath = GetScriptPath(scriptFolder, framework);
var scriptPath = GetScriptPath(env, scriptFolder, framework);
var omniSharpPath = GetOmniSharpPath(outputRoot, framework);
var content = GetScriptContent(omniSharpPath, framework);
var content = GetScriptContent(env, omniSharpPath, framework);

if (FileHelper.Exists(scriptPath))
{
Expand All @@ -26,13 +26,13 @@ private void CreateScript(string outputRoot, string scriptFolder, string framewo

FileHelper.WriteAllLines(scriptPath, content);

if (!IsRunningOnWindows())
if (!env.Platform.IsWindows)
{
Run("chmod", $"+x \"{scriptPath}\"");
}
}

private string GetScriptPath(string scriptFolder, string framework)
private string GetScriptPath(BuildEnvironment env, string scriptFolder, string framework)
{
var result = CombinePaths(scriptFolder, "OmniSharp");

Expand All @@ -41,7 +41,7 @@ private string GetScriptPath(string scriptFolder, string framework)
result += ".Core";
}

if (IsRunningOnWindows())
if (env.Platform.IsWindows)
{
result += ".cmd";
}
Expand All @@ -61,11 +61,11 @@ private string GetOmniSharpPath(string outputRoot, string framework)
return result;
}

private string[] GetScriptContent(string omniSharpPath, string framework)
private string[] GetScriptContent(BuildEnvironment env, string omniSharpPath, string framework)
{
var lines = new List<string>();

if (IsRunningOnWindows())
if (env.Platform.IsWindows)
{
lines.Add("SETLOCAL");
}
Expand All @@ -76,15 +76,15 @@ private string[] GetScriptContent(string omniSharpPath, string framework)

lines.Add("");

var arguments = IsRunningOnWindows()
var arguments = env.Platform.IsWindows
? "%*"
: "\"$@\"";

if (IsCore(framework) || IsRunningOnWindows())
if (IsCore(framework) || env.Platform.IsWindows)
{
lines.Add($"\"{omniSharpPath}\" {arguments}");
}
else // !isCore && !IsRunningOnWindows, i.e. Mono
else // !isCore && !env.Platform.IsWindows, i.e. Mono
{
lines.Add($"mono --assembly-loader=strict \"{omniSharpPath}\" {arguments}");
}
Expand Down
4 changes: 2 additions & 2 deletions scripts/msbuild.cake
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ using System.Net;

void SetupMSBuild(BuildEnvironment env, BuildPlan plan)
{
if (!IsRunningOnWindows())
if (!env.Platform.IsWindows)
{
AcquireMonoMSBuild(env, plan);
}
Expand Down Expand Up @@ -46,7 +46,7 @@ private void SetupMSBuildForFramework(BuildEnvironment env, string framework)
DirectoryHelper.Delete(msbuildFolder, recursive: true);
}

if (!IsRunningOnWindows() && framework == "net46")
if (!env.Platform.IsWindows && framework == "net46")
{
Information("Copying Mono MSBuild runtime for {0}...", framework);
DirectoryHelper.Copy(env.Folders.MonoMSBuildRuntime, msbuildFolder);
Expand Down

0 comments on commit 68c9641

Please sign in to comment.