Build.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using System.IO;
  2. using Nuke.Common;
  3. using Nuke.Common.Execution;
  4. using Nuke.Common.IO;
  5. using Nuke.Common.ProjectModel;
  6. using Nuke.Common.Tools.DotNet;
  7. using static Nuke.Common.IO.FileSystemTasks;
  8. using static Nuke.Common.Tools.DotNet.DotNetTasks;
  9. [UnsetVisualStudioEnvironmentVariables]
  10. class Build : NukeBuild
  11. {
  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 OutputDirectory => RootDirectory / "output";
  17. AbsolutePath SourceDirectory => RootDirectory / "src";
  18. Target Clean => _ => _
  19. .Before(Restore)
  20. .Executes(() =>
  21. {
  22. EnsureCleanDirectory(OutputDirectory);
  23. });
  24. Target Restore => _ => _
  25. .Executes(() =>
  26. {
  27. DotNetRestore(s => s
  28. .SetProjectFile(Solution));
  29. });
  30. Target Compile => _ => _
  31. .DependsOn(Restore)
  32. .Executes(() =>
  33. {
  34. DotNetBuild(s => s
  35. .SetProjectFile(Solution)
  36. .SetConfiguration(Configuration)
  37. .EnableNoRestore());
  38. });
  39. Target Test => _ => _
  40. .DependsOn(Compile)
  41. .Executes(() =>
  42. {
  43. DotNetTest(s => s
  44. .SetProjectFile(Solution)
  45. .EnableNoRestore());
  46. });
  47. Target Publish => _ => _
  48. .DependsOn(Test)
  49. .Executes(() =>{
  50. DotNetPublish(s => s
  51. .SetProject(SourceDirectory / "Website/Website.csproj")
  52. .SetConfiguration(Configuration)
  53. .SetOutput(OutputDirectory));
  54. var scssFiles = Directory.GetFiles(OutputDirectory / "wwwroot/css", "*.scss");
  55. foreach (var file in scssFiles)
  56. File.Delete(file);
  57. var cssFiles = Directory.GetFiles(OutputDirectory / "wwwroot/css", "*.css");
  58. foreach (var file in cssFiles)
  59. if (new FileInfo(file).Length == 0)
  60. File.Delete(file);
  61. });
  62. }