Build.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using Nuke.Common;
  2. using Nuke.Common.Execution;
  3. using Nuke.Common.IO;
  4. using Nuke.Common.ProjectModel;
  5. using Nuke.Common.Tools.DotNet;
  6. using Nuke.Common.Utilities.Collections;
  7. using static Nuke.Common.IO.FileSystemTasks;
  8. using static Nuke.Common.Tools.DotNet.DotNetTasks;
  9. [CheckBuildProjectConfigurations]
  10. [UnsetVisualStudioEnvironmentVariables]
  11. class Build : NukeBuild {
  12. public static int Main() => Execute<Build>(x => x.Publish);
  13. [Parameter("Configuration to build - Default is 'Debug' (local) or 'Release' (server)")]
  14. readonly Configuration Configuration = IsLocalBuild ? Configuration.Debug : Configuration.Release;
  15. [Solution] readonly Solution Solution;
  16. AbsolutePath SourceDirectory => RootDirectory / "src";
  17. AbsolutePath OutputDirectory => RootDirectory / "output";
  18. Target Clean => _ => _
  19. .Before(Restore)
  20. .Executes(() => {
  21. SourceDirectory.GlobDirectories("**/bin", "**/obj").ForEach(DeleteDirectory);
  22. EnsureCleanDirectory(OutputDirectory);
  23. });
  24. Target Restore => _ => _
  25. .Executes(() => {
  26. DotNetRestore(s => s
  27. .SetProjectFile(Solution));
  28. });
  29. Target Compile => _ => _
  30. .DependsOn(Restore)
  31. .Executes(() => {
  32. DotNetBuild(s => s
  33. .SetProjectFile(Solution)
  34. .SetConfiguration(Configuration)
  35. .EnableNoRestore());
  36. });
  37. Target Test => _ => _
  38. .DependsOn(Compile)
  39. .Executes(() => {
  40. DotNetTest(s => s
  41. .SetProjectFile(Solution)
  42. .EnableNoRestore());
  43. });
  44. Target Publish => _ => _
  45. .DependsOn(Test)
  46. .Executes(() => {
  47. DotNetPublish(s => s
  48. .SetProject(SourceDirectory / "Robware.Api.Projects/Robware.Api.Projects.csproj")
  49. .SetConfiguration(Configuration)
  50. .SetOutput(OutputDirectory));
  51. });
  52. }