diff --git a/.gitignore b/.gitignore index 48621c2..a08c01c 100644 --- a/.gitignore +++ b/.gitignore @@ -24,7 +24,7 @@ nupkg/ [Rr]eleases/ x64/ x86/ -build/ +#build/ bld/ [Bb]in/ [Oo]bj/ diff --git a/build/.editorconfig b/build/.editorconfig new file mode 100644 index 0000000..94be682 --- /dev/null +++ b/build/.editorconfig @@ -0,0 +1,10 @@ +[*.cs] +dotnet_style_qualification_for_field = false:warning +dotnet_style_qualification_for_property = false:warning +dotnet_style_qualification_for_method = false:warning +dotnet_style_qualification_for_event = false:warning +dotnet_style_require_accessibility_modifiers = never:warning + +csharp_style_expression_bodied_properties = true:warning +csharp_style_expression_bodied_indexers = true:warning +csharp_style_expression_bodied_accessors = true:warning diff --git a/build/Build.cs b/build/Build.cs new file mode 100644 index 0000000..07d99b5 --- /dev/null +++ b/build/Build.cs @@ -0,0 +1,79 @@ +using System; +using System.IO; +using System.Linq; +using Nuke.Common; +using Nuke.Common.Execution; +using Nuke.Common.Git; +using Nuke.Common.ProjectModel; +using Nuke.Common.Tooling; +using Nuke.Common.Tools.DotNet; +using Nuke.Common.Utilities.Collections; +using static Nuke.Common.EnvironmentInfo; +using static Nuke.Common.IO.FileSystemTasks; +using static Nuke.Common.IO.PathConstruction; +using static Nuke.Common.Tools.DotNet.DotNetTasks; + +[CheckBuildProjectConfigurations] +[UnsetVisualStudioEnvironmentVariables] +class Build : NukeBuild +{ + public static int Main() => Execute(x => x.Publish); + + [Parameter("Configuration to build - Default is 'Debug' (local) or 'Release' (server)")] + readonly Configuration Configuration = IsLocalBuild ? Configuration.Debug : Configuration.Release; + + [Solution] readonly Solution Solution; + + AbsolutePath OutputDirectory => RootDirectory / "output"; + + Target Clean => _ => _ + .Before(Restore) + .Executes(() => + { + EnsureCleanDirectory(OutputDirectory); + }); + + Target Restore => _ => _ + .Executes(() => + { + DotNetRestore(s => s + .SetProjectFile(Solution)); + }); + + Target Compile => _ => _ + .DependsOn(Restore) + .Executes(() => + { + DotNetBuild(s => s + .SetProjectFile(Solution) + .SetConfiguration(Configuration) + .EnableNoRestore()); + }); + + Target Test => _ => _ + .DependsOn(Restore) + .Executes(() => + { + DotNetTest(s => s + .SetProjectFile(Solution) + .EnableNoRestore()); + }); + + Target Publish => _ => _ + .DependsOn(Test) + .Executes(() =>{ + DotNetPublish(s => s + .SetConfiguration(Configuration) + .SetOutput(OutputDirectory)); + + var lessFiles = Directory.GetFiles(OutputDirectory / "wwwroot/css", "*.less"); + foreach (var file in lessFiles) + File.Delete(file); + + var cssFiles = Directory.GetFiles(OutputDirectory / "wwwroot/css", "*.css"); + foreach (var file in cssFiles) + if (new FileInfo(file).Length == 0) + File.Delete(file); + }); + +} diff --git a/build/_build.csproj b/build/_build.csproj new file mode 100644 index 0000000..f234845 --- /dev/null +++ b/build/_build.csproj @@ -0,0 +1,34 @@ + + + + Exe + netcoreapp2.0 + false + + False + CS0649;CS0169 + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/_build.csproj.DotSettings b/build/_build.csproj.DotSettings new file mode 100644 index 0000000..96e392e --- /dev/null +++ b/build/_build.csproj.DotSettings @@ -0,0 +1,23 @@ + + False + Implicit + Implicit + ExpressionBody + 0 + NEXT_LINE + True + False + 120 + IF_OWNER_IS_SINGLE_LINE + WRAP_IF_LONG + False + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + True + True + True + True + True + True + True + True