Files
K8sFileBrowser/build/Build.cs

123 lines
4.2 KiB
C#
Raw Permalink Normal View History

2023-08-10 22:02:02 +02:00
using System.IO;
using System.IO.Compression;
2023-08-10 21:27:58 +02:00
using Nuke.Common;
using Nuke.Common.IO;
using Nuke.Common.Tooling;
using Nuke.Common.Tools.DotNet;
using static Nuke.Common.Tools.DotNet.DotNetTasks;
class Build : NukeBuild
{
2023-08-10 22:02:02 +02:00
[Parameter("Configuration to build - Default is 'Debug' (local) or 'Release' (server)")]
readonly Configuration Configuration = IsLocalBuild ? Configuration.Debug : Configuration.Release;
2023-08-11 14:30:20 +02:00
2025-03-13 06:20:00 +01:00
[Parameter] readonly string Version = "1.5.0";
2023-08-11 14:30:20 +02:00
2023-08-10 21:27:58 +02:00
AbsolutePath SourceDirectory => RootDirectory / "K8sFileBrowser";
AbsolutePath OutputDirectory => RootDirectory / "output";
AbsolutePath WinOutputDirectory => OutputDirectory / "win";
AbsolutePath LinuxOutputDirectory => OutputDirectory / "linux";
AbsolutePath OsxOutputDirectory => OutputDirectory / "osx";
2023-08-11 14:30:20 +02:00
2023-08-10 22:02:02 +02:00
AbsolutePath WinZip => OutputDirectory / $"K8sFileBrowser_{Version}.zip";
AbsolutePath LinuxGz => OutputDirectory / $"K8sFileBrowser_{Version}.tgz";
AbsolutePath OsxGz => OutputDirectory / $"K8sFileBrowser_OSX_{Version}.tgz";
2023-08-11 14:30:20 +02:00
2023-08-10 21:27:58 +02:00
AbsolutePath ProjectFile => SourceDirectory / "K8sFileBrowser.csproj";
2023-08-10 22:02:02 +02:00
readonly string ExcludedExtensions = "pdb";
2023-08-11 14:30:20 +02:00
2023-08-10 21:27:58 +02:00
public static int Main () => Execute<Build>(x => x.Publish);
2023-08-10 22:02:02 +02:00
2023-08-10 21:27:58 +02:00
Target Clean => _ => _
.Executes(() =>
{
2023-08-10 22:02:02 +02:00
OutputDirectory.DeleteDirectory();
2023-08-10 21:27:58 +02:00
});
Target PublishWin => _ => _
.DependsOn(Clean)
.Executes(() =>
{
DotNetPublish(s => s
.SetProject(ProjectFile)
.SetConfiguration(Configuration)
.SetOutput(WinOutputDirectory)
.EnableSelfContained()
2025-03-13 03:21:23 +01:00
.SetFramework("net8.0")
2023-08-10 21:27:58 +02:00
.SetRuntime("win-x64")
.EnablePublishSingleFile()
.EnablePublishReadyToRun()
2023-08-10 21:27:58 +02:00
.SetAuthors("Andreas Billmann")
.SetCopyright("Copyright (c) 2023")
.SetVersion(Version)
.SetProcessArgumentConfigurator(_ => _
2023-08-11 14:30:20 +02:00
.Add("-p:IncludeNativeLibrariesForSelfExtract=true")));
2023-08-10 22:02:02 +02:00
WinOutputDirectory.ZipTo(
WinZip,
filter: x => !x.HasExtension(ExcludedExtensions),
compressionLevel: CompressionLevel.SmallestSize,
fileMode: FileMode.CreateNew);
2023-08-10 21:27:58 +02:00
});
2023-08-11 14:30:20 +02:00
2023-08-10 21:27:58 +02:00
Target PublishLinux => _ => _
2023-08-11 14:30:20 +02:00
.DependsOn(Clean)
2023-08-10 21:27:58 +02:00
.Executes(() =>
{
DotNetPublish(s => s
.SetProject(ProjectFile)
.SetConfiguration(Configuration)
.SetOutput(LinuxOutputDirectory)
.EnableSelfContained()
2025-03-13 03:21:23 +01:00
.SetFramework("net8.0")
2023-08-10 21:27:58 +02:00
.SetRuntime("linux-x64")
.EnablePublishSingleFile()
.EnablePublishReadyToRun()
2023-08-10 21:27:58 +02:00
.SetAuthors("Andreas Billmann")
.SetCopyright("Copyright (c) 2023")
.SetVersion(Version)
.SetProcessArgumentConfigurator(_ => _
2023-08-11 14:30:20 +02:00
.Add("-p:IncludeNativeLibrariesForSelfExtract=true")));
2023-08-10 22:02:02 +02:00
LinuxOutputDirectory.TarGZipTo(
LinuxGz,
filter: x => !x.HasExtension(ExcludedExtensions),
fileMode: FileMode.CreateNew);
2023-08-10 21:27:58 +02:00
});
Target PublishOsx => _ => _
.DependsOn(Clean)
.Executes(() =>
{
DotNetPublish(s => s
.SetProject(ProjectFile)
.SetConfiguration(Configuration)
.SetOutput(OsxOutputDirectory)
.EnableSelfContained()
2025-03-13 03:21:23 +01:00
.SetFramework("net8.0")
.SetRuntime("osx-arm64")
.EnablePublishSingleFile()
.EnablePublishReadyToRun()
.SetAuthors("Andreas Billmann")
.SetCopyright("Copyright (c) 2023")
.SetVersion(Version)
.SetProcessArgumentConfigurator(_ => _
.Add("-p:IncludeNativeLibrariesForSelfExtract=true")));
OsxOutputDirectory.TarGZipTo(
OsxGz,
filter: x => !x.HasExtension(ExcludedExtensions),
fileMode: FileMode.CreateNew);
});
2023-08-11 14:30:20 +02:00
2023-08-10 21:27:58 +02:00
Target Publish => _ => _
.DependsOn(PublishWin, PublishLinux, PublishOsx)
2023-08-10 21:27:58 +02:00
.Executes(() =>
{
});
2023-08-11 14:30:20 +02:00
}