Skip to content

Commit 719797c

Browse files
committed
finish implementation of individual-project-version flag
1 parent d45e03f commit 719797c

File tree

9 files changed

+72
-31
lines changed

9 files changed

+72
-31
lines changed

BuildProject.fsproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
<PackageTags>build f#</PackageTags>
1919
<RepositoryUrl>https://github.com/kMutagene/BuildProject</RepositoryUrl>
2020
<RepositoryType>git</RepositoryType>
21-
<PackageVersion>2.0.0</PackageVersion>
22-
<PackageReleaseNotes>Update fake dependencies and add TFM argument</PackageReleaseNotes>
21+
<PackageVersion>3.0.0</PackageVersion>
22+
<PackageReleaseNotes>Add `` flag for enabling projects being build and released with individual versions and release notes</PackageReleaseNotes>
2323
</PropertyGroup>
2424
<PropertyGroup>
2525
<ExcludeFromPackage>

Content/.template.config/template.json

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,13 @@
2727
"description": "The target framework of the build project (net6.0 or net7.0). default is net6.0",
2828
"type": "parameter",
2929
"replaces": "{TFM}",
30-
"datatype": "choice",
31-
"choices": [
32-
"net6.0",
33-
"net7.0"
34-
],
3530
"defaultValue": "net6.0"
3631
},
37-
"individuaPackageVersions": {
32+
"individual-package-versions": {
3833
"description": "If set, the build project will support individual package versions and release notes per project.",
39-
"type": "parameter"
34+
"type": "parameter",
35+
"dataType": "bool",
36+
"defaultValue": "false"
4037
}
4138
}
4239
}

Content/BasicTasks.fs

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,6 @@ open Fake.IO.Globbing.Operators
77

88
open ProjectInfo
99

10-
let setPrereleaseTag = BuildTask.create "SetPrereleaseTag" [] {
11-
printfn "Please enter pre-release package suffix"
12-
let suffix = System.Console.ReadLine()
13-
prereleaseSuffix <- suffix
14-
prereleaseTag <- (sprintf "%s-%s" release.NugetVersion suffix)
15-
isPrerelease <- true
16-
}
17-
1810
let clean = BuildTask.create "Clean" [] {
1911
!! "src/**/bin"
2012
++ "src/**/obj"
@@ -24,7 +16,22 @@ let clean = BuildTask.create "Clean" [] {
2416
|> Shell.cleanDirs
2517
}
2618

27-
#if (individuaPackageVersions)
19+
#if (individual-package-versions)
20+
21+
/// Buildtask for setting a prerelease tag (also sets the mutable isPrerelease to true, and the PackagePrereleaseTag of all project infos accordingly.)
22+
let setPrereleaseTag =
23+
BuildTask.create "SetPrereleaseTag" [] {
24+
printfn "Please enter pre-release package suffix"
25+
let suffix = System.Console.ReadLine()
26+
prereleaseSuffix <- suffix
27+
isPrerelease <- true
28+
projects
29+
|> List.iter (fun p ->
30+
p.PackagePrereleaseTag <- (sprintf "%s-%s" p.PackageVersionTag suffix)
31+
)
32+
//
33+
prereleaseTag <- (sprintf "%s-%s" CoreProject.PackageVersionTag suffix)
34+
}
2835

2936
/// builds the solution file (dotnet build solution.sln)
3037
let buildSolution =
@@ -80,6 +87,14 @@ let build = BuildTask.create "Build" [clean] {
8087

8188
#else
8289

90+
let setPrereleaseTag = BuildTask.create "SetPrereleaseTag" [] {
91+
printfn "Please enter pre-release package suffix"
92+
let suffix = System.Console.ReadLine()
93+
prereleaseSuffix <- suffix
94+
prereleaseTag <- (sprintf "%s-%s" release.NugetVersion suffix)
95+
isPrerelease <- true
96+
}
97+
8398
let build = BuildTask.create "Build" [clean] {
8499
solutionFile
85100
|> DotNet.build id

Content/DocumentationTasks.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ open BasicTasks
66

77
open BlackFox.Fake
88

9-
#if (individuaPackageVersions)
9+
#if (individual-package-versions)
1010

1111
let buildDocs =
1212
BuildTask.create "BuildDocs" [ build ] {

Content/PackageTasks.fs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@ open TestTasks
88

99
open BlackFox.Fake
1010
open Fake.Core
11+
open Fake.DotNet
1112
open Fake.IO.Globbing.Operators
1213

13-
#if (individuaPackageVersions)
14+
#if (individual-package-versions)
1415

1516
let pack = BuildTask.create "Pack" [ clean; build; runTests ] {
1617
projects

Content/ProjectInfo.fs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
open Fake.Core
44

5-
#if (individuaPackageVersions)
5+
#if (individual-package-versions)
66

77
/// Contains relevant information about a project (e.g. version info, project location)
88
type ProjectInfo = {
@@ -51,13 +51,13 @@ type ProjectInfo = {
5151
}
5252

5353
// adapt this to reflect the core project in your repository. The only effect this will have is the version displayed in the docs, as it is currently only possible to have one version displayed there.
54-
let coreProject = ProjectInfo.create("", "", "")
54+
let CoreProject = ProjectInfo.create("", "", "")
5555

5656
let projects =
5757
[
5858
// add relative paths (from project root) to your projects here, including individual reslease notes files
5959
// e.g. ProjectInfo.create("MyProject", "src/MyProject/MyProject.fsproj", "src/MyProject/RELEASE_NOTES.md")
60-
coreProject
60+
CoreProject
6161
]
6262

6363
#endif
@@ -67,7 +67,7 @@ let project = "{PROJECTNAME}"
6767
let testProjects =
6868
[
6969
// add relative paths (from project root) to your testprojects here
70-
#if (individuaPackageVersions)
70+
#if (individual-package-versions)
7171
// e.g. ProjectInfo.create("MyTestProject", "tests/MyTestProject/MyTestProject.fsproj")
7272
#endif
7373
]
@@ -84,7 +84,7 @@ let projectRepo = $"https://github.com/{gitOwner}/{project}"
8484

8585
let pkgDir = "pkg"
8686

87-
#if (individuaPackageVersions)
87+
#if (individual-package-versions)
8888

8989
/// docs are always targeting the version of the core project
9090
let stableDocsVersionTag = CoreProject.PackageVersionTag

Content/ReleaseNotesTasks.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module ReleaseNotesTasks
22

3-
#if (individuaPackageVersions)
3+
#if (individual-package-versions)
44

55
// indivudual project release notes do not support automated release notes generation at the moment.
66

Content/ReleaseTasks.fs

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ open Fake.Tools
1515
open Fake.IO
1616
open Fake.IO.Globbing.Operators
1717

18-
#if (individuaPackageVersions)
18+
#if (individual-package-versions)
1919

2020
let createTag =
2121
BuildTask.create "CreateTag" [ clean; build; runTests; pack ] {
@@ -119,6 +119,32 @@ let publishNugetPrerelease =
119119
failwith "aborted"
120120
}
121121

122+
let releaseDocs = BuildTask.create "ReleaseDocs" [buildDocs] {
123+
let msg =
124+
sprintf "release docs for version %s?" stableDocsVersionTag
125+
if promptYesNo msg then
126+
Shell.cleanDir "temp"
127+
Git.CommandHelper.runSimpleGitCommand "." (sprintf "clone %s temp/gh-pages --depth 1 -b gh-pages" projectRepo) |> ignore
128+
Shell.copyRecursive "output" "temp/gh-pages" true |> printfn "%A"
129+
Git.CommandHelper.runSimpleGitCommand "temp/gh-pages" "add ." |> printfn "%s"
130+
let cmd = sprintf """commit -a -m "Update generated documentation for version %s""" stableDocsVersionTag
131+
Git.CommandHelper.runSimpleGitCommand "temp/gh-pages" cmd |> printfn "%s"
132+
Git.Branches.push "temp/gh-pages"
133+
else failwith "aborted"
134+
}
135+
136+
let prereleaseDocs = BuildTask.create "PrereleaseDocs" [buildDocsPrerelease] {
137+
let msg = sprintf "release docs for version %s?" prereleaseTag
138+
if promptYesNo msg then
139+
Shell.cleanDir "temp"
140+
Git.CommandHelper.runSimpleGitCommand "." (sprintf "clone %s temp/gh-pages --depth 1 -b gh-pages" projectRepo) |> ignore
141+
Shell.copyRecursive "output" "temp/gh-pages" true |> printfn "%A"
142+
Git.CommandHelper.runSimpleGitCommand "temp/gh-pages" "add ." |> printfn "%s"
143+
let cmd = sprintf """commit -a -m "Update generated documentation for version %s""" prereleaseTag
144+
Git.CommandHelper.runSimpleGitCommand "temp/gh-pages" cmd |> printfn "%s"
145+
Git.Branches.push "temp/gh-pages"
146+
else failwith "aborted"
147+
}
122148
#else
123149
let createTag = BuildTask.create "CreateTag" [clean; build; runTests; pack] {
124150
if promptYesNo (sprintf "tagging branch with %s OK?" stableVersionTag ) then
@@ -162,10 +188,11 @@ let publishNugetPrerelease = BuildTask.create "PublishNugetPrerelease" [clean; b
162188
if not result.OK then failwith "failed to push packages"
163189
else failwith "aborted"
164190
}
165-
#endif
166191

167192
let releaseDocs = BuildTask.create "ReleaseDocs" [buildDocs] {
168-
let msg = sprintf "release docs for version %s?" stableVersionTag
193+
let msg =
194+
sprintf "release docs for version %s?"
195+
stableVersionTag
169196
if promptYesNo msg then
170197
Shell.cleanDir "temp"
171198
Git.CommandHelper.runSimpleGitCommand "." (sprintf "clone %s temp/gh-pages --depth 1 -b gh-pages" projectRepo) |> ignore
@@ -188,4 +215,5 @@ let prereleaseDocs = BuildTask.create "PrereleaseDocs" [buildDocsPrerelease] {
188215
Git.CommandHelper.runSimpleGitCommand "temp/gh-pages" cmd |> printfn "%s"
189216
Git.Branches.push "temp/gh-pages"
190217
else failwith "aborted"
191-
}
218+
}
219+
#endif

Content/TestTasks.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ open Fake.DotNet
66
open ProjectInfo
77
open BasicTasks
88

9-
#if (individuaPackageVersions)
9+
#if (individual-package-versions)
1010

1111
let buildTests =
1212
BuildTask.create "BuildTests" [clean; build] {

0 commit comments

Comments
 (0)