diff --git a/tools/Build/Build.cs b/tools/Build/Build.cs index fa6e361..c772f3e 100644 --- a/tools/Build/Build.cs +++ b/tools/Build/Build.cs @@ -1,71 +1,71 @@ -using Faithlife.Build; -using NuGet.Configuration; -using NuGet.Versioning; -using static Faithlife.Build.DotNetRunner; - -internal static class Build -{ - public static int Main(string[] args) => BuildRunner.Execute(args, build => - { - var artifactDirOption = build.AddOption("--artifact-dir ", "Artifact directory", defaultValue: "artifacts"); - - var dotNetSettings = new DotNetBuildSettings(); - - build.AddDotNetTargets(dotNetSettings); - - build.Target("deployment-package") - .DependsOn("test") - .Describe("Creates the deployment package") - .Does(() => - { - var projectPath = Path.Combine("src", "Twain.Web", "Twain.Web.csproj"); - - if (artifactDirOption.Value != null) - DeleteDirectory(artifactDirOption.Value); - - RunDotNet(new[] - { - "publish", projectPath, - "-c", dotNetSettings.GetConfiguration(), - "-o", artifactDirOption.Value, - dotNetSettings.GetPlatformArg(), - "--no-build", - dotNetSettings.GetVerbosityArg(), - dotNetSettings.GetMaxCpuCountArg() - }); - }); - - build.Target("codegen") - .DependsOn("restore") - .Describe("Generates code from the FSD") - .Does(() => CodeGen(verify: false)); - - build.Target("verify-codegen") - .DependsOn("restore") - .Describe("Ensures that the generated code is up-to-date") - .Does(() => CodeGen(verify: true)); - - build.Target("build") - .DependsOn("verify-codegen"); - - void CodeGen(bool verify) - { - const string slash = "/"; - const string fsdFilePath = "fsd/OapApi.v1.fsd"; - const string clientProject = "OapApi.v1.Client"; - const string webApiProject = "OapApi.v1"; - - var csharpCodeGenerator = DotNetLocalTool.Create("fsdgencsharp"); - var aspnetCodeGenerator = DotNetLocalTool.Create("fsdgenaspnet"); - var mdCodeGenerator = DotNetLocalTool.Create("fsdgenmd"); - var swaggerCodeGenerator = DotNetLocalTool.Create("fsdgenswagger"); - - var verifyOption = verify ? "--verify" : null; - - csharpCodeGenerator.Run(fsdFilePath, Path.Combine("src", clientProject) + slash, "--namespace", clientProject, "--clean", "--newline", "lf", verifyOption); - aspnetCodeGenerator.Run(fsdFilePath, Path.Combine("src", "Modules", webApiProject, "Controllers"), "--namespace", $"{webApiProject}.Controllers", "--newline", "lf", verifyOption, "--target", "core"); - mdCodeGenerator.Run(fsdFilePath, Path.Combine("docs", "api") + slash, "--clean", "--newline", "lf", verifyOption); - swaggerCodeGenerator.Run(fsdFilePath, Path.Combine("src", "Modules", webApiProject, "swagger.json"), "--json", "--newline", "lf", verifyOption); - } - }); -} +using Faithlife.Build; +using NuGet.Configuration; +using NuGet.Versioning; +using static Faithlife.Build.DotNetRunner; + +internal static class Build +{ + public static int Main(string[] args) => BuildRunner.Execute(args, build => + { + var artifactDirOption = build.AddOption("--artifact-dir ", "Artifact directory", defaultValue: "artifacts"); + + var dotNetSettings = new DotNetBuildSettings(); + + build.AddDotNetTargets(dotNetSettings); + + build.Target("deployment-package") + .DependsOn("test") + .Describe("Creates the deployment package") + .Does(() => + { + var projectPath = Path.Combine("src", "Twain.Web", "Twain.Web.csproj"); + + if (artifactDirOption.Value != null) + DeleteDirectory(artifactDirOption.Value); + + RunDotNet(new[] + { + "publish", projectPath, + "-c", dotNetSettings.GetConfiguration(), + "-o", artifactDirOption.Value, + dotNetSettings.GetPlatformArg(), + "--no-build", + dotNetSettings.GetVerbosityArg(), + dotNetSettings.GetMaxCpuCountArg() + }); + }); + + build.Target("codegen") + .DependsOn("restore") + .Describe("Generates code from the FSD") + .Does(() => CodeGen(verify: false)); + + build.Target("verify-codegen") + .DependsOn("restore") + .Describe("Ensures that the generated code is up-to-date") + .Does(() => CodeGen(verify: true)); + + build.Target("build") + .DependsOn("verify-codegen"); + + void CodeGen(bool verify) + { + const string slash = "/"; + const string fsdFilePath = "fsd/Oap.Api.v1.fsd"; + const string clientProject = "OapApi.v1.Client"; + const string webApiProject = "OapApi.v1"; + + var csharpCodeGenerator = DotNetLocalTool.Create("fsdgencsharp"); + var aspnetCodeGenerator = DotNetLocalTool.Create("fsdgenaspnet"); + var mdCodeGenerator = DotNetLocalTool.Create("fsdgenmd"); + var swaggerCodeGenerator = DotNetLocalTool.Create("fsdgenswagger"); + + var verifyOption = verify ? "--verify" : null; + + csharpCodeGenerator.Run(fsdFilePath, Path.Combine("src", clientProject) + slash, "--namespace", clientProject, "--clean", "--newline", "lf", verifyOption); + aspnetCodeGenerator.Run(fsdFilePath, Path.Combine("src", "Modules", webApiProject, "Controllers"), "--namespace", $"{webApiProject}.Controllers", "--newline", "lf", verifyOption, "--target", "core"); + mdCodeGenerator.Run(fsdFilePath, Path.Combine("docs", "api") + slash, "--clean", "--newline", "lf", verifyOption); + swaggerCodeGenerator.Run(fsdFilePath, Path.Combine("src", "Modules", webApiProject, "swagger.json"), "--json", "--newline", "lf", verifyOption); + } + }); +}