* Update the Dockerfiles * Use newer Xcode * Update Blazor WASM Sample * Update Uno Samples
135 lines
3.8 KiB
C#
135 lines
3.8 KiB
C#
using System.Runtime.InteropServices;
|
|
using System.Text.RegularExpressions;
|
|
|
|
var TARGET = Argument("t", Argument("target", "Default"));
|
|
var VERBOSITY = Context.Log.Verbosity;
|
|
var CONFIGURATION = Argument("c", Argument("configuration", "Release"));
|
|
|
|
var VS_INSTALL = Argument("vsinstall", EnvironmentVariable("VS_INSTALL"));
|
|
var MSBUILD_EXE = Argument("msbuild", EnvironmentVariable("MSBUILD_EXE"));
|
|
|
|
var BUILD_ARCH = Argument("arch", Argument("buildarch", EnvironmentVariable("BUILD_ARCH") ?? ""))
|
|
.ToLower().Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
|
|
|
|
var BUILD_VARIANT = Argument("variant", EnvironmentVariable("BUILD_VARIANT"));
|
|
var ADDITIONAL_GN_ARGS = Argument("gnArgs", Argument("gnargs", EnvironmentVariable("ADDITIONAL_GN_ARGS")));
|
|
|
|
DirectoryPath PROFILE_PATH = EnvironmentVariable("USERPROFILE") ?? EnvironmentVariable("HOME");
|
|
|
|
Information("Arguments:");
|
|
foreach (var arg in Arguments()) {
|
|
foreach (var val in arg.Value) {
|
|
Information($" {arg.Key.PadRight(30)} {{0}}", val);
|
|
}
|
|
}
|
|
|
|
void RunCake(FilePath cake, string target = null, Dictionary<string, string> arguments = null)
|
|
{
|
|
var args = Arguments().ToDictionary(a => a.Key, a => a.Value.LastOrDefault());
|
|
|
|
args["target"] = target;
|
|
args["verbosity"] = VERBOSITY.ToString();
|
|
|
|
if (arguments != null) {
|
|
foreach (var arg in arguments) {
|
|
args[arg.Key] = arg.Value;
|
|
}
|
|
}
|
|
|
|
cake = MakeAbsolute(cake);
|
|
var cmd = $"cake {cake}";
|
|
|
|
foreach (var arg in args) {
|
|
cmd += $@" --{arg.Key}=""{arg.Value}""";
|
|
}
|
|
|
|
DotNetTool(cmd);
|
|
}
|
|
|
|
void RunProcess(FilePath process, string args = "")
|
|
{
|
|
var result = StartProcess(process, args);
|
|
if (result != 0) {
|
|
throw new Exception($"Process '{process}' failed with error: {result}");
|
|
}
|
|
}
|
|
|
|
void RunProcess(FilePath process, string args, out IEnumerable<string> stdout)
|
|
{
|
|
var settings = new ProcessSettings {
|
|
RedirectStandardOutput = true,
|
|
Arguments = args,
|
|
};
|
|
var result = StartProcess(process, settings, out var stdoutActual);
|
|
stdout = stdoutActual.ToArray();
|
|
if (result != 0) {
|
|
throw new Exception($"Process '{process}' failed with error: {result}");
|
|
}
|
|
}
|
|
|
|
void RunProcess(FilePath process, ProcessSettings settings)
|
|
{
|
|
var result = StartProcess(process, settings);
|
|
if (result != 0) {
|
|
throw new Exception($"Process '{process}' failed with error: {result}");
|
|
}
|
|
}
|
|
|
|
IProcess RunAndReturnProcess(FilePath process, ProcessSettings settings)
|
|
{
|
|
var proc = StartAndReturnProcess(process, settings);
|
|
return proc;
|
|
}
|
|
|
|
IProcess RunAndReturnProcess(FilePath process, string arguments)
|
|
{
|
|
var proc = RunAndReturnProcess(process, new ProcessSettings {
|
|
Arguments = arguments,
|
|
});
|
|
return proc;
|
|
}
|
|
|
|
string GetVersion(string lib, string type = "nuget")
|
|
{
|
|
return GetRegexValue($@"^{lib}\s*{type}\s*(.*)$", ROOT_PATH.CombineWithFilePath("scripts/VERSIONS.txt"));
|
|
}
|
|
|
|
string GetRegexValue(string regex, FilePath file)
|
|
{
|
|
try {
|
|
var contents = System.IO.File.ReadAllText(file.FullPath);
|
|
var match = Regex.Match(contents, regex, RegexOptions.IgnoreCase | RegexOptions.Multiline);
|
|
return match.Groups[1].Value.Trim();
|
|
} catch {
|
|
return "";
|
|
}
|
|
}
|
|
|
|
void DeleteDir(DirectoryPath dir)
|
|
{
|
|
if (DirectoryExists(dir))
|
|
DeleteDirectory(dir, new DeleteDirectorySettings { Recursive = true, Force = true });
|
|
}
|
|
|
|
void CleanDir(DirectoryPath dir)
|
|
{
|
|
if (DirectoryExists(dir)) {
|
|
foreach (var d in GetSubDirectories(dir)) {
|
|
DeleteDir(d);
|
|
}
|
|
CleanDirectory(dir);
|
|
}
|
|
|
|
EnsureDirectoryExists(dir);
|
|
}
|
|
|
|
void TakeSnapshot(DirectoryPath output, string name)
|
|
{
|
|
if (IsRunningOnWindows())
|
|
return;
|
|
|
|
var fname = $"screenshot-{DateTime.Now:yyyyMMdd_hhmmss}-{name}.jpg";
|
|
var dest = output.CombineWithFilePath(fname);
|
|
|
|
RunProcess("screencapture", dest.FullPath);
|
|
}
|