diff options
Diffstat (limited to 'ThirdParty/CsvHelper-master/build/Build.cs')
-rw-r--r-- | ThirdParty/CsvHelper-master/build/Build.cs | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/ThirdParty/CsvHelper-master/build/Build.cs b/ThirdParty/CsvHelper-master/build/Build.cs new file mode 100644 index 0000000..0d5a61c --- /dev/null +++ b/ThirdParty/CsvHelper-master/build/Build.cs @@ -0,0 +1,156 @@ +// Copyright 2009-2021 Josh Close +// This file is a part of CsvHelper and is dual licensed under MS-PL and Apache 2.0. +// See LICENSE.txt for details or visit http://www.opensource.org/licenses/ms-pl.html for MS-PL and http://opensource.org/licenses/Apache-2.0 for Apache 2.0. +// https://github.com/JoshClose/CsvHelper +using System; +using System.Linq; +using Nuke.Common; +using Nuke.Common.CI; +using Nuke.Common.Execution; +using Nuke.Common.Git; +using Nuke.Common.IO; +using Nuke.Common.ProjectModel; +using Nuke.Common.Tooling; +using Nuke.Common.Tools.DotNet; +using Nuke.Common.Tools.GitVersion; +using Nuke.Common.Utilities.Collections; +using static Nuke.Common.IO.FileSystemTasks; +using static Nuke.Common.IO.PathConstruction; +using static Nuke.Common.Tools.DotNet.DotNetTasks; + +[CheckBuildProjectConfigurations] +[UnsetVisualStudioEnvironmentVariables] +class Build : NukeBuild +{ + /// Support plugins are available for: + /// - JetBrains ReSharper https://nuke.build/resharper + /// - JetBrains Rider https://nuke.build/rider + /// - Microsoft VisualStudio https://nuke.build/visualstudio + /// - Microsoft VSCode https://nuke.build/vscode + + public static int Main() => Execute<Build>(x => x.Test); + + [Parameter("Configuration to build - Default is 'Debug' (local) or 'Release' (server)")] + readonly Configuration Configuration = IsLocalBuild ? Configuration.Debug : Configuration.Release; + [Parameter("NuGet server URL.")] + readonly string NugetSource = "https://api.nuget.org/v3/index.json"; + [Parameter("API Key for the NuGet server.")] + readonly string NugetApiKey; + [Parameter("Version to use for package.")] + readonly string Version; + [Parameter("NuGet package version.")] + readonly string PackageVersion; + + [Solution] + readonly Solution Solution; + [GitRepository] + readonly GitRepository GitRepository; + [GitVersion] + readonly GitVersion GitVersion; + + AbsolutePath SourceDirectory => RootDirectory / "src"; + AbsolutePath TestsDirectory => RootDirectory / "tests"; + AbsolutePath ArtifactsDirectory => RootDirectory / "artifacts"; + AbsolutePath DocsDirectory => RootDirectory / "docs"; + + Project CsvHelperProject => Solution.GetProject("CsvHelper"); + Project DocsProject => Solution.GetProject("CsvHelper.Website"); + + Target Clean => _ => _ + .Before(Restore) + .Executes(() => + { + SourceDirectory.GlobDirectories("**/bin", "**/obj").ForEach(DeleteDirectory); + TestsDirectory.GlobDirectories("**/bin", "**/obj").ForEach(DeleteDirectory); + EnsureCleanDirectory(ArtifactsDirectory); + }); + + Target Restore => _ => _ + .Executes(() => + { + DotNetRestore(s => s + .SetProjectFile(Solution) + ); + }); + + Target Compile => _ => _ + .DependsOn(Restore) + .Executes(() => + { + DotNetBuild(s => s + .EnableNoRestore() + .SetProjectFile(Solution) + .SetConfiguration(Configuration) + .SetAssemblyVersion(GitVersion.AssemblySemVer) + .SetFileVersion(GitVersion.AssemblySemFileVer) + .SetInformationalVersion(GitVersion.InformationalVersion) + ); + + DotNetPublish(s => s + .EnableNoRestore() + .EnableNoBuild() + .SetConfiguration(Configuration) + .SetAssemblyVersion(GitVersion.AssemblySemVer) + .SetFileVersion(GitVersion.AssemblySemFileVer) + .SetInformationalVersion(GitVersion.InformationalVersion) + .CombineWith( + from project in new[] { CsvHelperProject } + from framework in project.GetTargetFrameworks() + select new { project, framework }, (cs, v) => cs + .SetProject(v.project) + .SetFramework(v.framework) + ) + ); + }); + + Target Test => _ => _ + .DependsOn(Compile) + .Executes(() => + { + DotNetTest(s => s + .SetProjectFile(Solution) + .SetConfiguration(Configuration) + .EnableNoRestore() + .EnableNoBuild() + ); + }); + + Target Pack => _ => _ + .DependsOn(Clean, Test) + .Requires(() => Configuration == Configuration.Release) + .Executes(() => + { + DotNetPack(s => s + .EnableNoRestore() + .EnableNoBuild() + .SetProject(CsvHelperProject) + .SetConfiguration(Configuration) + .SetOutputDirectory(ArtifactsDirectory) + .SetProperty("PackageVersion", PackageVersion ?? GitVersion.NuGetVersionV2) + ); + }); + + Target Push => _ => _ + .Executes(() => + { + DotNetNuGetPush(s => s + .SetSource(NugetSource) + .SetApiKey(NugetApiKey) + .CombineWith(ArtifactsDirectory.GlobFiles("*.nupkg"), (s, v) => s + .SetTargetPath(v) + ) + ); + }); + + Target Docs => _ => _ + .Executes(() => + { + EnsureCleanDirectory(DocsDirectory); + + DotNetRun(s => s + .SetProjectFile(DocsProject) + .SetConfiguration(Configuration.Release) + .SetApplicationArguments($"-o \"{DocsDirectory}\"") + ); + }); +} |