Repository navigation
Expand file tree
/
Copy pathProjectInfo.fs
More file actions
127 lines (106 loc) · 5.06 KB
/
Copy pathProjectInfo.fs
File metadata and controls
127 lines (106 loc) · 5.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
module ProjectInfo
open Fake.Core
/// Contains relevant information about a project (e.g. version info, project location)
type ProjectInfo = {
Name: string
ProjFile: string
ReleaseNotes: ReleaseNotes.ReleaseNotes Option
PackageVersionTag: string
mutable PackagePrereleaseTag: string
AssemblyVersion: string
AssemblyInformationalVersion: string
} with
/// creates a ProjectInfo given a name, project file path, and release notes file path.
/// version info is created from the version header of the uppermost release notes entry.
/// Assembly version is set to X.0.0, where X is the major version from the releas enotes.
static member create(
name: string,
projFile: string,
releaseNotesPath: string
): ProjectInfo =
let release = releaseNotesPath |> ReleaseNotes.load
let stableVersion = release.NugetVersion |> SemVer.parse
let stableVersionTag = $"{stableVersion.Major}.{stableVersion.Minor}.{stableVersion.Patch}"
let assemblyVersion = $"{stableVersion.Major}.0.0"
let assemblyInformationalVersion = stableVersionTag
{
Name = name
ProjFile = projFile
ReleaseNotes = Some release
PackagePrereleaseTag = ""
PackageVersionTag = stableVersionTag
AssemblyVersion = assemblyVersion
AssemblyInformationalVersion = assemblyInformationalVersion
}
static member create(
name: string,
projFile: string
): ProjectInfo =
{
Name = name
ProjFile = projFile
ReleaseNotes = None
PackagePrereleaseTag = ""
PackageVersionTag = ""
AssemblyVersion = ""
AssemblyInformationalVersion = ""
}
let projectName = "Plotly.NET"
let solutionFile = $"{projectName}.sln"
let gitOwner = "plotly"
let gitHome = $"https://github.com/{gitOwner}"
let projectRepo = $"https://github.com/{gitOwner}/{projectName}"
/// packages are generated in this directory.
let pkgDir = "pkg"
/// binaries are built using this configuration.
let configuration = "Release"
// test base projects (need to be built first)
let FSharpTestBaseProject = ProjectInfo.create("FSharpTestBase", "tests/Common/FSharpTestBase/FSharpTestBase.fsproj")
let CSharpTestBaseProject = ProjectInfo.create("CSharpTestBase", "tests/Common/CSharpTestBase/CSharpTestBase.csproj")
let testBaseProjects = [
FSharpTestBaseProject
CSharpTestBaseProject
]
// test projects (.NET)
let CoreTestProject = ProjectInfo.create("CoreTests", "tests/CoreTests/CoreTests/CoreTests.fsproj")
/// contains project info about the core test projects
let testProjectsCore = [
CoreTestProject
]
let ImageExportTestProject = ProjectInfo.create("ImageExportTests", "tests/ExtensionLibsTests/ImageExportTests/ImageExportTests.fsproj")
let CSharpTestProject = ProjectInfo.create("CSharpTests", "tests/ExtensionLibsTests/CSharpTests/CSharpTests.csproj")
let VersoTestProject = ProjectInfo.create("VersoTests", "tests/ExtensionLibsTests/VersoTests/VersoTests.fsproj")
let VersoBrowserTestProject = ProjectInfo.create("VersoBrowserTests", "tests/ExtensionLibsTests/VersoBrowserTests/VersoBrowserTests.fsproj")
let VersoIntegrationTestProject = ProjectInfo.create("VersoIntegrationTests", "tests/VersoTests/Integration/VersoIntegrationTests.fsproj")
// Real-host tests have their own target because they install and launch the pinned Verso CLI.
let testProjectsVersoIntegration = [ VersoIntegrationTestProject ]
///
let testProjectsExtensionsLibs = [
ImageExportTestProject
CSharpTestProject
VersoTestProject
VersoBrowserTestProject
]
let CoreProject = ProjectInfo.create("Plotly.NET", "src/Plotly.NET/Plotly.NET.fsproj", "src/Plotly.NET/RELEASE_NOTES.md")
let InteractiveProject = ProjectInfo.create("Plotly.NET.Interactive", "src/Plotly.NET.Interactive/Plotly.NET.Interactive.fsproj", "src/Plotly.NET.Interactive/RELEASE_NOTES.md")
let ImageExportProject = ProjectInfo.create("Plotly.NET.ImageExport", "src/Plotly.NET.ImageExport/Plotly.NET.ImageExport.fsproj", "src/Plotly.NET.ImageExport/RELEASE_NOTES.md")
let CSharpProject = ProjectInfo.create("Plotly.NET.CSharp", "src/Plotly.NET.CSharp/Plotly.NET.CSharp.csproj", "src/Plotly.NET.CSharp/RELEASE_NOTES.md")
let VersoProject = ProjectInfo.create("Plotly.NET.Verso", "src/Plotly.NET.Verso/Plotly.NET.Verso.fsproj", "src/Plotly.NET.Verso/RELEASE_NOTES.md")
/// contains project info about all projects
let projects = [
CoreProject
InteractiveProject
ImageExportProject
CSharpProject
VersoProject
]
/// docs are always targeting the version of the core project
let stableDocsVersionTag = CoreProject.PackageVersionTag
/// branch tag is always the version of the core project
let branchTag = CoreProject.PackageVersionTag
/// prerelease suffix used by prerelease buildtasks
let mutable prereleaseSuffix = ""
/// prerelease tag used by prerelease buildtasks
let mutable prereleaseTag = ""
/// mutable switch used to signal that we are building a prerelease version, used in prerelease buildtasks
let mutable isPrerelease = false