Skip to content

Commit 8aa9b09

Browse files
committed
Moves main build script to use dotnet as runner instead of fake-cli
1 parent 969c1f7 commit 8aa9b09

File tree

7 files changed

+128
-82
lines changed

7 files changed

+128
-82
lines changed

.config/dotnet-tools.json

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,12 @@
11
{
2-
"version": 1,
3-
"isRoot": true,
4-
"tools": {
5-
"fake-cli": {
6-
"version": "5.20.4-alpha.1642",
7-
"commands": [
8-
"fake"
9-
]
10-
},
11-
"paket": {
12-
"version": "6.0.0-beta8",
13-
"commands": [
14-
"paket"
15-
]
2+
"version": 1,
3+
"isRoot": true,
4+
"tools": {
5+
"paket": {
6+
"version": "6.0.0-beta8",
7+
"commands": [
8+
"paket"
9+
]
10+
}
1611
}
17-
}
1812
}

MiniScaffold.sln

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "MiniScaffold.Tests", "tests
99
EndProject
1010
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "docsTool", "docsTool\docsTool.fsproj", "{361D039E-0F84-4D82-97E1-E4111B1C54DA}"
1111
EndProject
12+
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "build", "build\build.fsproj", "{B89375C3-9F6B-4C83-8ECE-733799D01470}"
13+
EndProject
1214
Global
1315
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1416
Debug|Any CPU = Debug|Any CPU
@@ -46,6 +48,18 @@ Global
4648
{361D039E-0F84-4D82-97E1-E4111B1C54DA}.Release|x64.Build.0 = Release|Any CPU
4749
{361D039E-0F84-4D82-97E1-E4111B1C54DA}.Release|x86.ActiveCfg = Release|Any CPU
4850
{361D039E-0F84-4D82-97E1-E4111B1C54DA}.Release|x86.Build.0 = Release|Any CPU
51+
{B89375C3-9F6B-4C83-8ECE-733799D01470}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
52+
{B89375C3-9F6B-4C83-8ECE-733799D01470}.Debug|Any CPU.Build.0 = Debug|Any CPU
53+
{B89375C3-9F6B-4C83-8ECE-733799D01470}.Debug|x64.ActiveCfg = Debug|Any CPU
54+
{B89375C3-9F6B-4C83-8ECE-733799D01470}.Debug|x64.Build.0 = Debug|Any CPU
55+
{B89375C3-9F6B-4C83-8ECE-733799D01470}.Debug|x86.ActiveCfg = Debug|Any CPU
56+
{B89375C3-9F6B-4C83-8ECE-733799D01470}.Debug|x86.Build.0 = Debug|Any CPU
57+
{B89375C3-9F6B-4C83-8ECE-733799D01470}.Release|Any CPU.ActiveCfg = Release|Any CPU
58+
{B89375C3-9F6B-4C83-8ECE-733799D01470}.Release|Any CPU.Build.0 = Release|Any CPU
59+
{B89375C3-9F6B-4C83-8ECE-733799D01470}.Release|x64.ActiveCfg = Release|Any CPU
60+
{B89375C3-9F6B-4C83-8ECE-733799D01470}.Release|x64.Build.0 = Release|Any CPU
61+
{B89375C3-9F6B-4C83-8ECE-733799D01470}.Release|x86.ActiveCfg = Release|Any CPU
62+
{B89375C3-9F6B-4C83-8ECE-733799D01470}.Release|x86.Build.0 = Release|Any CPU
4963
EndGlobalSection
5064
GlobalSection(NestedProjects) = preSolution
5165
{03550157-2E00-4662-A76E-9E7ED8CB0E7C} = {099ABA3C-C2CE-4465-AB6D-795AB722A2A8}

build.cmd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
echo Restoring dotnet tools...
22
dotnet tool restore
33

4-
dotnet fake build -t %*
4+
dotnet run -p ./build/build.fsproj -- -t %*

build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ set -o pipefail
66
echo "Restoring dotnet tools..."
77
dotnet tool restore
88

9-
FAKE_DETAILED_ERRORS=true dotnet fake build -t "$@"
9+
FAKE_DETAILED_ERRORS=true dotnet run -p ./build/build.fsproj -- -t "$@"

build.fsx renamed to build/build.fs

Lines changed: 72 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,4 @@
1-
#load ".fake/build.fsx/intellisense.fsx"
2-
#load "docsTool/CLI.fs"
3-
#if !FAKE
4-
#r "Facades/netstandard"
5-
#r "netstandard"
6-
#endif
7-
#nowarn "52"
8-
91
open System
10-
open Fake.SystemHelper
112
open Fake.Core
123
open Fake.DotNet
134
open Fake.Tools
@@ -28,25 +19,26 @@ BuildServer.install [
2819

2920
let srcGlob = "*.csproj"
3021

31-
let testsGlob = __SOURCE_DIRECTORY__ @@ "tests/**/*.??proj"
22+
let testsGlob = __SOURCE_DIRECTORY__ </> ".." </> "tests/**/*.??proj"
3223

33-
let distDir = __SOURCE_DIRECTORY__ @@ "dist"
34-
let distGlob = distDir @@ "*.nupkg"
24+
let distDir = __SOURCE_DIRECTORY__ </> ".." </> "dist"
25+
let distGlob = distDir </> "*.nupkg"
3526

36-
let docsDir = __SOURCE_DIRECTORY__ @@ "docs"
37-
let docsSrcDir = __SOURCE_DIRECTORY__ @@ "docsSrc"
38-
let docsToolDir = __SOURCE_DIRECTORY__ @@ "docsTool"
39-
let docsToolProj = docsToolDir @@ "docsTool.fsproj"
40-
let docsSrcGlob = docsSrcDir @@ "**/*.fsx"
27+
let docsDir = __SOURCE_DIRECTORY__ </> ".." </> "docs"
28+
let docsSrcDir = __SOURCE_DIRECTORY__ </> ".." </> "docsSrc"
29+
let docsToolDir = __SOURCE_DIRECTORY__ </> ".." </> "docsTool"
30+
let docsToolProj = docsToolDir </> "docsTool.fsproj"
31+
let docsSrcGlob = docsSrcDir </> "**/*.fsx"
4132

4233
let gitOwner = "TheAngryByrd"
4334
let gitRepoName = "MiniScaffold"
4435

45-
let contentDir = __SOURCE_DIRECTORY__ @@ "Content"
36+
let contentDir = __SOURCE_DIRECTORY__ </> ".." </> "Content"
37+
4638

4739

4840
let tagFromVersionNumber versionNumber = sprintf "%s" versionNumber
49-
let changelogFilename = "CHANGELOG.md"
41+
let changelogFilename = __SOURCE_DIRECTORY__ </> ".." </> "CHANGELOG.md"
5042
let changelog = Fake.Core.Changelog.load changelogFilename
5143
let mutable latestEntry =
5244
if Seq.isEmpty changelog.Entries
@@ -61,13 +53,8 @@ let docsSiteBaseUrl = "https://www.jimmybyrd.me/MiniScaffold"
6153

6254
let isCI = Environment.environVarAsBool "CI"
6355

64-
6556
let githubToken = Environment.environVarOrNone "GITHUB_TOKEN"
66-
Option.iter(TraceSecrets.register "<GITHUB_TOKEN>" )
67-
68-
6957
let nugetToken = Environment.environVarOrNone "NUGET_TOKEN"
70-
Option.iter(TraceSecrets.register "<NUGET_TOKEN>")
7158

7259
//-----------------------------------------------------------------------------
7360
// Helpers
@@ -453,53 +440,73 @@ let ``release docs`` ctx =
453440
// If we're calling "Release" target, we'll let the "GitRelease" target do the git push
454441
Git.Branches.push ""
455442

443+
let initTargets () =
444+
445+
/// Defines a dependency - y is dependent on x
446+
let (==>!) x y = x ==> y |> ignore
447+
/// Defines a soft dependency. x must run before y, if it is present, but y does not require x to be run.
448+
let (?=>!) x y = x ?=> y |> ignore
456449
//-----------------------------------------------------------------------------
457-
// Target Declaration
450+
// Hide Secrets in Logger
458451
//-----------------------------------------------------------------------------
459-
460-
Target.create "Clean" clean
461-
Target.create "DotnetRestore" ``dotnet restore``
462-
Target.create "UpdateChangelog" ``update changelog``
463-
Target.createBuildFailure "RevertChangelog" ``revert changelog`` // Do NOT put this in the dependency chain
464-
Target.createFinal "DeleteChangelogBackupFile" ``delete changelogBackupFile`` // Do NOT put this in the dependency chain
465-
Target.create "DotnetPack" ``dotnet pack``
466-
Target.create "IntegrationTests" ``integration tests``
467-
Target.create "PublishToNuGet" publish
468-
Target.create "GitRelease" ``git release``
469-
Target.create "GitHubRelease" ``github release``
470-
Target.create "Release" ignore
471-
Target.create "BuildDocs" ``build docs``
472-
Target.create "WatchDocs" ``watch docs``
473-
Target.create "ReleaseDocs" ``release docs``
474-
452+
Option.iter(TraceSecrets.register "<GITHUB_TOKEN>" ) githubToken
453+
Option.iter(TraceSecrets.register "<NUGET_TOKEN>") nugetToken
475454
//-----------------------------------------------------------------------------
476-
// Target Dependencies
455+
// Target Declaration
477456
//-----------------------------------------------------------------------------
478-
"DotnetPack" ==> "BuildDocs"
479-
"BuildDocs" ==> "ReleaseDocs"
480-
"BuildDocs" ?=> "PublishToNuGet"
481-
"IntegrationTests" ?=> "ReleaseDocs"
482-
"ReleaseDocs" ?=> "GitRelease"
483-
"ReleaseDocs" ==> "Release"
484-
485-
// Only call UpdateChangelog if Publish was in the call chain
486-
// Ensure UpdateChangelog is called after DotnetRestore and before GenerateAssemblyInfo
487-
"DotnetRestore" ?=> "UpdateChangelog"
488-
"UpdateChangelog" ?=> "DotnetPack"
489-
"UpdateChangelog" ==> "PublishToNuGet"
490-
491-
"Clean"
492-
==> "DotnetRestore"
493-
==> "DotnetPack"
494-
//https://github.com/dotnet/templating/issues/1736#issuecomment-464847242
495-
=?> ("IntegrationTests", isCI)
496-
==> "PublishToNuGet"
497-
==> "GitRelease"
498-
==> "GithubRelease"
499-
==> "Release"
457+
Target.create "Clean" clean
458+
Target.create "DotnetRestore" ``dotnet restore``
459+
Target.create "UpdateChangelog" ``update changelog``
460+
Target.createBuildFailure "RevertChangelog" ``revert changelog`` // Do NOT put this in the dependency chain
461+
Target.createFinal "DeleteChangelogBackupFile" ``delete changelogBackupFile`` // Do NOT put this in the dependency chain
462+
Target.create "DotnetPack" ``dotnet pack``
463+
Target.create "IntegrationTests" ``integration tests``
464+
Target.create "PublishToNuGet" publish
465+
Target.create "GitRelease" ``git release``
466+
Target.create "GitHubRelease" ``github release``
467+
Target.create "Release" ignore
468+
Target.create "BuildDocs" ``build docs``
469+
Target.create "WatchDocs" ``watch docs``
470+
Target.create "ReleaseDocs" ``release docs``
471+
472+
//-----------------------------------------------------------------------------
473+
// Target Dependencies
474+
//-----------------------------------------------------------------------------
475+
"DotnetPack" ==>! "BuildDocs"
476+
"BuildDocs" ==>! "ReleaseDocs"
477+
"BuildDocs" ?=>! "PublishToNuGet"
478+
"IntegrationTests" ?=>! "ReleaseDocs"
479+
"ReleaseDocs" ?=>! "GitRelease"
480+
"ReleaseDocs" ==>! "Release"
481+
482+
// Only call UpdateChangelog if Publish was in the call chain
483+
// Ensure UpdateChangelog is called after DotnetRestore and before GenerateAssemblyInfo
484+
"DotnetRestore" ?=>! "UpdateChangelog"
485+
"UpdateChangelog" ?=>! "DotnetPack"
486+
"UpdateChangelog" ==>! "PublishToNuGet"
487+
488+
"Clean"
489+
==> "DotnetRestore"
490+
==> "DotnetPack"
491+
=?> ("IntegrationTests", isCI)
492+
==> "PublishToNuGet"
493+
==> "GitRelease"
494+
==> "GithubRelease"
495+
==>! "Release"
500496

501497
//-----------------------------------------------------------------------------
502498
// Target Start
503499
//-----------------------------------------------------------------------------
504500

505-
Target.runOrDefaultWithArguments (if isCI then "IntegrationTests" else "DotnetPack")
501+
502+
[<EntryPoint>]
503+
let main argv =
504+
argv
505+
|> Array.toList
506+
|> Context.FakeExecutionContext.Create false "build.fsx"
507+
|> Context.RuntimeContext.Fake
508+
|> Context.setExecutionContext
509+
initTargets ()
510+
Target.runOrDefaultWithArguments (if isCI then "IntegrationTests" else "DotnetPack")
511+
512+
0 // return an integer exit code

build/build.fsproj

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project Sdk="Microsoft.NET.Sdk">
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>net5.0</TargetFramework>
6+
<WarnOn>3390;$(WarnOn)</WarnOn>
7+
</PropertyGroup>
8+
<ItemGroup>
9+
10+
<Compile Include="../docsTool/CLI.fs" Link="CLI.fs" />
11+
<Compile Include="build.fs" />
12+
</ItemGroup>
13+
<Import Project="..\.paket\Paket.Restore.targets" />
14+
</Project>

build/paket.references

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
group Build
2+
FSharp.Core
3+
YoloDev.Expecto.TestSdk
4+
Microsoft.NET.Test.Sdk
5+
Fake.IO.FileSystem
6+
Fake.Core.Target
7+
Fake.Core.ReleaseNotes
8+
FAKE.Core.Environment
9+
Fake.DotNet.Cli
10+
FAKE.Core.Process
11+
Fake.DotNet.AssemblyInfoFile
12+
Fake.Tools.Git
13+
Fake.DotNet.Paket
14+
Fake.Api.GitHub
15+
Fake.BuildServer.GitHubActions
16+
Argu
17+
Octokit

0 commit comments

Comments
 (0)