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
-
9
1
open System
10
- open Fake.SystemHelper
11
2
open Fake.Core
12
3
open Fake.DotNet
13
4
open Fake.Tools
@@ -28,25 +19,26 @@ BuildServer.install [
28
19
29
20
let srcGlob = " *.csproj"
30
21
31
- let testsGlob = __ SOURCE_ DIRECTORY__ @@ " tests/**/*.??proj"
22
+ let testsGlob = __ SOURCE_ DIRECTORY__ </> " .. " </> " tests/**/*.??proj"
32
23
33
- let distDir = __ SOURCE_ DIRECTORY__ @@ " dist"
34
- let distGlob = distDir @@ " *.nupkg"
24
+ let distDir = __ SOURCE_ DIRECTORY__ </> " .. " </> " dist"
25
+ let distGlob = distDir </> " *.nupkg"
35
26
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"
41
32
42
33
let gitOwner = " TheAngryByrd"
43
34
let gitRepoName = " MiniScaffold"
44
35
45
- let contentDir = __ SOURCE_ DIRECTORY__ @@ " Content"
36
+ let contentDir = __ SOURCE_ DIRECTORY__ </> " .." </> " Content"
37
+
46
38
47
39
48
40
let tagFromVersionNumber versionNumber = sprintf " %s " versionNumber
49
- let changelogFilename = " CHANGELOG.md"
41
+ let changelogFilename = __ SOURCE _ DIRECTORY __ </> " .. " </> " CHANGELOG.md"
50
42
let changelog = Fake.Core.Changelog.load changelogFilename
51
43
let mutable latestEntry =
52
44
if Seq.isEmpty changelog.Entries
@@ -61,13 +53,8 @@ let docsSiteBaseUrl = "https://www.jimmybyrd.me/MiniScaffold"
61
53
62
54
let isCI = Environment.environVarAsBool " CI"
63
55
64
-
65
56
let githubToken = Environment.environVarOrNone " GITHUB_TOKEN"
66
- Option.iter( TraceSecrets.register " <GITHUB_TOKEN>" )
67
-
68
-
69
57
let nugetToken = Environment.environVarOrNone " NUGET_TOKEN"
70
- Option.iter( TraceSecrets.register " <NUGET_TOKEN>" )
71
58
72
59
//-----------------------------------------------------------------------------
73
60
// Helpers
@@ -453,53 +440,73 @@ let ``release docs`` ctx =
453
440
// If we're calling "Release" target, we'll let the "GitRelease" target do the git push
454
441
Git.Branches.push " "
455
442
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
456
449
//-----------------------------------------------------------------------------
457
- // Target Declaration
450
+ // Hide Secrets in Logger
458
451
//-----------------------------------------------------------------------------
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
475
454
//-----------------------------------------------------------------------------
476
- // Target Dependencies
455
+ // Target Declaration
477
456
//-----------------------------------------------------------------------------
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"
500
496
501
497
//-----------------------------------------------------------------------------
502
498
// Target Start
503
499
//-----------------------------------------------------------------------------
504
500
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
0 commit comments