From d2ec9a759e9ccb6917f9afcb813d6ebdfd5b67da Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Sun, 12 Jun 2022 14:18:58 +0200 Subject: [PATCH 1/4] Add release notes for individual projects --- src/Plotly.NET.CSharp/RELEASE_NOTES.md | 38 +++++++++++++++++++ .../Plotly.NET.ImageExport.fsproj | 1 + src/Plotly.NET.ImageExport/RELEASE_NOTES.md | 3 ++ .../Plotly.NET.Interactive.fsproj | 3 +- src/Plotly.NET.Interactive/RELEASE_NOTES.md | 3 ++ src/Plotly.NET/Plotly.NET.fsproj | 2 +- src/Plotly.NET/RELEASE_NOTES.md | 3 ++ 7 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 src/Plotly.NET.CSharp/RELEASE_NOTES.md create mode 100644 src/Plotly.NET.ImageExport/RELEASE_NOTES.md create mode 100644 src/Plotly.NET.Interactive/RELEASE_NOTES.md create mode 100644 src/Plotly.NET/RELEASE_NOTES.md diff --git a/src/Plotly.NET.CSharp/RELEASE_NOTES.md b/src/Plotly.NET.CSharp/RELEASE_NOTES.md new file mode 100644 index 000000000..608bf6c9d --- /dev/null +++ b/src/Plotly.NET.CSharp/RELEASE_NOTES.md @@ -0,0 +1,38 @@ +### 0.0.1 - June 10 2020 + +C# bindings for basic charts and styling for usage in ML.NET notebooks: + +**Chart styling / Layouting** + +- [x] Extension Methods + - [x] SaveHtml + - [x] Show + - [x] WithTraceInfo + - [x] WithSize + - [x] WithXAxisStyle + - [x] WithYAxisStyle +- [x] Chart.Grid +- [x] Chart.Combine + +**Chart generation** +- [x] Chart.Invisible +- [x] Chart2D + - [x] Scatter + - [x] Point + - [x] Line + - [x] Bar + - [x] Column +- [x] Chart3D + - [x] Scatter3D +- [x] ChartPolar + - [x] ScatterPolar +- [x] ChartMap + - [x] ScatterGeo +- [x] ChartTernary + - [x] ScatterTernary +- [x] ChartCarpet + - [x] Carpet +- [x] ChartDomain + - [x] Pie + - [x] ChartSmith + - [x] ScatterSmith \ No newline at end of file diff --git a/src/Plotly.NET.ImageExport/Plotly.NET.ImageExport.fsproj b/src/Plotly.NET.ImageExport/Plotly.NET.ImageExport.fsproj index bd9228f1b..1bd082d3a 100644 --- a/src/Plotly.NET.ImageExport/Plotly.NET.ImageExport.fsproj +++ b/src/Plotly.NET.ImageExport/Plotly.NET.ImageExport.fsproj @@ -22,6 +22,7 @@ + diff --git a/src/Plotly.NET.ImageExport/RELEASE_NOTES.md b/src/Plotly.NET.ImageExport/RELEASE_NOTES.md new file mode 100644 index 000000000..0f2b2adcf --- /dev/null +++ b/src/Plotly.NET.ImageExport/RELEASE_NOTES.md @@ -0,0 +1,3 @@ +### 3.0.0 - June 10 2020 + +Test \ No newline at end of file diff --git a/src/Plotly.NET.Interactive/Plotly.NET.Interactive.fsproj b/src/Plotly.NET.Interactive/Plotly.NET.Interactive.fsproj index 56708aa7a..92ee802c5 100644 --- a/src/Plotly.NET.Interactive/Plotly.NET.Interactive.fsproj +++ b/src/Plotly.NET.Interactive/Plotly.NET.Interactive.fsproj @@ -38,8 +38,9 @@ - + + diff --git a/src/Plotly.NET.Interactive/RELEASE_NOTES.md b/src/Plotly.NET.Interactive/RELEASE_NOTES.md new file mode 100644 index 000000000..0f2b2adcf --- /dev/null +++ b/src/Plotly.NET.Interactive/RELEASE_NOTES.md @@ -0,0 +1,3 @@ +### 3.0.0 - June 10 2020 + +Test \ No newline at end of file diff --git a/src/Plotly.NET/Plotly.NET.fsproj b/src/Plotly.NET/Plotly.NET.fsproj index a126fab4e..f5228d875 100644 --- a/src/Plotly.NET/Plotly.NET.fsproj +++ b/src/Plotly.NET/Plotly.NET.fsproj @@ -32,6 +32,7 @@ https://github.com/plotly/Plotly.NET/blob/dev/RELEASE_NOTES.md + @@ -125,7 +126,6 @@ - diff --git a/src/Plotly.NET/RELEASE_NOTES.md b/src/Plotly.NET/RELEASE_NOTES.md new file mode 100644 index 000000000..0f2b2adcf --- /dev/null +++ b/src/Plotly.NET/RELEASE_NOTES.md @@ -0,0 +1,3 @@ +### 3.0.0 - June 10 2020 + +Test \ No newline at end of file From aafff8d1775bf3c07051a31e490f0483fb4b2bc6 Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Sun, 12 Jun 2022 14:19:16 +0200 Subject: [PATCH 2/4] Rename C# interop project --- Plotly.NET.sln | 24 +++++++++---------- .../APITest/Chart2DAPITest.cs | 0 .../APITest/Chart3DAPITest.cs | 0 .../APITest/ChartDomainAPITest.cs | 0 .../APITest/ChartMapAPITest.cs | 0 .../APITest/ChartPolarAPITest.cs | 0 .../LayoutObjectTests.cs | 0 ...y.NET.Tests.CSharpInteroperability.csproj} | 0 .../StyleParamTests.cs | 0 .../TraceObjectTests.cs | 0 10 files changed, 12 insertions(+), 12 deletions(-) rename tests/{Plotly.NET.Tests.CSharp => Plotly.NET.Tests.CSharpInteroperability}/APITest/Chart2DAPITest.cs (100%) rename tests/{Plotly.NET.Tests.CSharp => Plotly.NET.Tests.CSharpInteroperability}/APITest/Chart3DAPITest.cs (100%) rename tests/{Plotly.NET.Tests.CSharp => Plotly.NET.Tests.CSharpInteroperability}/APITest/ChartDomainAPITest.cs (100%) rename tests/{Plotly.NET.Tests.CSharp => Plotly.NET.Tests.CSharpInteroperability}/APITest/ChartMapAPITest.cs (100%) rename tests/{Plotly.NET.Tests.CSharp => Plotly.NET.Tests.CSharpInteroperability}/APITest/ChartPolarAPITest.cs (100%) rename tests/{Plotly.NET.Tests.CSharp => Plotly.NET.Tests.CSharpInteroperability}/LayoutObjectTests.cs (100%) rename tests/{Plotly.NET.Tests.CSharp/Plotly.NET.Tests.CSharp.csproj => Plotly.NET.Tests.CSharpInteroperability/Plotly.NET.Tests.CSharpInteroperability.csproj} (100%) rename tests/{Plotly.NET.Tests.CSharp => Plotly.NET.Tests.CSharpInteroperability}/StyleParamTests.cs (100%) rename tests/{Plotly.NET.Tests.CSharp => Plotly.NET.Tests.CSharpInteroperability}/TraceObjectTests.cs (100%) diff --git a/Plotly.NET.sln b/Plotly.NET.sln index 71e035ef3..8a44815a5 100644 --- a/Plotly.NET.sln +++ b/Plotly.NET.sln @@ -107,12 +107,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{7B09CC0A-F docs\11_1_carpet_line_scatter_plots.fsx = docs\11_1_carpet_line_scatter_plots.fsx docs\11_2_contourcarpet_plots.fsx = docs\11_2_contourcarpet_plots.fsx docs\12_1_smith_line_scatter_plots.fsx = docs\12_1_smith_line_scatter_plots.fsx - docs\_template.fsx = docs\_template.fsx - docs\_template.html = docs\_template.html - docs\_template.ipynb = docs\_template.ipynb docs\Dockerfile = docs\Dockerfile docs\index.fsx = docs\index.fsx docs\NuGet.config = docs\NuGet.config + docs\_template.fsx = docs\_template.fsx + docs\_template.html = docs\_template.html + docs\_template.ipynb = docs\_template.ipynb EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "reference", "reference", "{5219BAC7-ACE6-435F-A983-BC63DD7B745E}" @@ -144,8 +144,6 @@ Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Plotly.NET.Tests.FSharpCons EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Plotly.NET.Tests.CSharpConsole", "tests\Plotly.NET.Tests.CSharpConsole\Plotly.NET.Tests.CSharpConsole.csproj", "{1BC73DA0-586F-45C2-BC5B-A70C452A00F0}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Plotly.NET.Tests.CSharp", "tests\Plotly.NET.Tests.CSharp\Plotly.NET.Tests.CSharp.csproj", "{26539796-0C9D-4856-8584-B58BE32CC495}" -EndProject Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Plotly.NET.ImageExport.Tests", "tests\Plotly.NET.ImageExport.Tests\Plotly.NET.ImageExport.Tests.fsproj", "{55A461C3-8018-4020-B16E-D6005BDFCAED}" EndProject Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "build", "build\build.fsproj", "{403785C9-B5B1-4BA4-9944-A0F9D5D1B3CD}" @@ -154,6 +152,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Plotly.NET.CSharp", "src\Pl EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Plotly.NET.CSharp.Tests", "tests\Plotly.NET.CSharp.Tests\Plotly.NET.CSharp.Tests.csproj", "{4C24BA53-F41C-4110-AD7A-28143DCF671E}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Plotly.NET.Tests.CSharpInteroperability", "tests\Plotly.NET.Tests.CSharpInteroperability\Plotly.NET.Tests.CSharpInteroperability.csproj", "{64022D22-EB9A-4AE3-A0E6-BFA41E8B18CB}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -197,12 +197,6 @@ Global {1BC73DA0-586F-45C2-BC5B-A70C452A00F0}.Dotnet|Any CPU.Build.0 = Debug|Any CPU {1BC73DA0-586F-45C2-BC5B-A70C452A00F0}.Release|Any CPU.ActiveCfg = Release|Any CPU {1BC73DA0-586F-45C2-BC5B-A70C452A00F0}.Release|Any CPU.Build.0 = Release|Any CPU - {26539796-0C9D-4856-8584-B58BE32CC495}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {26539796-0C9D-4856-8584-B58BE32CC495}.Debug|Any CPU.Build.0 = Debug|Any CPU - {26539796-0C9D-4856-8584-B58BE32CC495}.Dotnet|Any CPU.ActiveCfg = Debug|Any CPU - {26539796-0C9D-4856-8584-B58BE32CC495}.Dotnet|Any CPU.Build.0 = Debug|Any CPU - {26539796-0C9D-4856-8584-B58BE32CC495}.Release|Any CPU.ActiveCfg = Release|Any CPU - {26539796-0C9D-4856-8584-B58BE32CC495}.Release|Any CPU.Build.0 = Release|Any CPU {55A461C3-8018-4020-B16E-D6005BDFCAED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {55A461C3-8018-4020-B16E-D6005BDFCAED}.Debug|Any CPU.Build.0 = Debug|Any CPU {55A461C3-8018-4020-B16E-D6005BDFCAED}.Dotnet|Any CPU.ActiveCfg = Debug|Any CPU @@ -227,6 +221,12 @@ Global {4C24BA53-F41C-4110-AD7A-28143DCF671E}.Dotnet|Any CPU.Build.0 = Debug|Any CPU {4C24BA53-F41C-4110-AD7A-28143DCF671E}.Release|Any CPU.ActiveCfg = Release|Any CPU {4C24BA53-F41C-4110-AD7A-28143DCF671E}.Release|Any CPU.Build.0 = Release|Any CPU + {64022D22-EB9A-4AE3-A0E6-BFA41E8B18CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {64022D22-EB9A-4AE3-A0E6-BFA41E8B18CB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {64022D22-EB9A-4AE3-A0E6-BFA41E8B18CB}.Dotnet|Any CPU.ActiveCfg = Debug|Any CPU + {64022D22-EB9A-4AE3-A0E6-BFA41E8B18CB}.Dotnet|Any CPU.Build.0 = Debug|Any CPU + {64022D22-EB9A-4AE3-A0E6-BFA41E8B18CB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {64022D22-EB9A-4AE3-A0E6-BFA41E8B18CB}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -241,11 +241,11 @@ Global {6CFC629E-1A0C-4EF3-8495-BA00A356A381} = {0E87E47E-9EDC-4525-AF72-F0E139D54236} {60114ACE-77E6-4A19-9A2F-CB64084174AF} = {EAE25A1F-86FC-426B-803F-1006D1AD06A8} {1BC73DA0-586F-45C2-BC5B-A70C452A00F0} = {EAE25A1F-86FC-426B-803F-1006D1AD06A8} - {26539796-0C9D-4856-8584-B58BE32CC495} = {EAE25A1F-86FC-426B-803F-1006D1AD06A8} {55A461C3-8018-4020-B16E-D6005BDFCAED} = {EAE25A1F-86FC-426B-803F-1006D1AD06A8} {403785C9-B5B1-4BA4-9944-A0F9D5D1B3CD} = {7C6D08E7-3EAC-4335-8F4B-252C193C27C9} {F944FE69-F4A5-4B48-8E4D-BE4B61E92B26} = {0E87E47E-9EDC-4525-AF72-F0E139D54236} {4C24BA53-F41C-4110-AD7A-28143DCF671E} = {EAE25A1F-86FC-426B-803F-1006D1AD06A8} + {64022D22-EB9A-4AE3-A0E6-BFA41E8B18CB} = {EAE25A1F-86FC-426B-803F-1006D1AD06A8} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {7177F1E1-341C-48AB-9864-6B525FFF7633} diff --git a/tests/Plotly.NET.Tests.CSharp/APITest/Chart2DAPITest.cs b/tests/Plotly.NET.Tests.CSharpInteroperability/APITest/Chart2DAPITest.cs similarity index 100% rename from tests/Plotly.NET.Tests.CSharp/APITest/Chart2DAPITest.cs rename to tests/Plotly.NET.Tests.CSharpInteroperability/APITest/Chart2DAPITest.cs diff --git a/tests/Plotly.NET.Tests.CSharp/APITest/Chart3DAPITest.cs b/tests/Plotly.NET.Tests.CSharpInteroperability/APITest/Chart3DAPITest.cs similarity index 100% rename from tests/Plotly.NET.Tests.CSharp/APITest/Chart3DAPITest.cs rename to tests/Plotly.NET.Tests.CSharpInteroperability/APITest/Chart3DAPITest.cs diff --git a/tests/Plotly.NET.Tests.CSharp/APITest/ChartDomainAPITest.cs b/tests/Plotly.NET.Tests.CSharpInteroperability/APITest/ChartDomainAPITest.cs similarity index 100% rename from tests/Plotly.NET.Tests.CSharp/APITest/ChartDomainAPITest.cs rename to tests/Plotly.NET.Tests.CSharpInteroperability/APITest/ChartDomainAPITest.cs diff --git a/tests/Plotly.NET.Tests.CSharp/APITest/ChartMapAPITest.cs b/tests/Plotly.NET.Tests.CSharpInteroperability/APITest/ChartMapAPITest.cs similarity index 100% rename from tests/Plotly.NET.Tests.CSharp/APITest/ChartMapAPITest.cs rename to tests/Plotly.NET.Tests.CSharpInteroperability/APITest/ChartMapAPITest.cs diff --git a/tests/Plotly.NET.Tests.CSharp/APITest/ChartPolarAPITest.cs b/tests/Plotly.NET.Tests.CSharpInteroperability/APITest/ChartPolarAPITest.cs similarity index 100% rename from tests/Plotly.NET.Tests.CSharp/APITest/ChartPolarAPITest.cs rename to tests/Plotly.NET.Tests.CSharpInteroperability/APITest/ChartPolarAPITest.cs diff --git a/tests/Plotly.NET.Tests.CSharp/LayoutObjectTests.cs b/tests/Plotly.NET.Tests.CSharpInteroperability/LayoutObjectTests.cs similarity index 100% rename from tests/Plotly.NET.Tests.CSharp/LayoutObjectTests.cs rename to tests/Plotly.NET.Tests.CSharpInteroperability/LayoutObjectTests.cs diff --git a/tests/Plotly.NET.Tests.CSharp/Plotly.NET.Tests.CSharp.csproj b/tests/Plotly.NET.Tests.CSharpInteroperability/Plotly.NET.Tests.CSharpInteroperability.csproj similarity index 100% rename from tests/Plotly.NET.Tests.CSharp/Plotly.NET.Tests.CSharp.csproj rename to tests/Plotly.NET.Tests.CSharpInteroperability/Plotly.NET.Tests.CSharpInteroperability.csproj diff --git a/tests/Plotly.NET.Tests.CSharp/StyleParamTests.cs b/tests/Plotly.NET.Tests.CSharpInteroperability/StyleParamTests.cs similarity index 100% rename from tests/Plotly.NET.Tests.CSharp/StyleParamTests.cs rename to tests/Plotly.NET.Tests.CSharpInteroperability/StyleParamTests.cs diff --git a/tests/Plotly.NET.Tests.CSharp/TraceObjectTests.cs b/tests/Plotly.NET.Tests.CSharpInteroperability/TraceObjectTests.cs similarity index 100% rename from tests/Plotly.NET.Tests.CSharp/TraceObjectTests.cs rename to tests/Plotly.NET.Tests.CSharpInteroperability/TraceObjectTests.cs From d8b8cfab10ae4fc218892eda937040be3bff927d Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Sun, 12 Jun 2022 15:43:29 +0200 Subject: [PATCH 3/4] Update build pipeline, add strong name --- Plotly.NET.sln | 1 + build/BasicTasks.fs | 43 ++++++- build/DocumentationTasks.fs | 8 +- build/PackageTasks.fs | 101 +++++++++++------ build/ProjectInfo.fs | 105 ++++++++++++++---- build/ReleaseTasks.fs | 34 ++++-- build/TestTasks.fs | 23 +++- key.snk | Bin 0 -> 596 bytes .../Plotly.NET.CSharp.csproj | 2 + .../Plotly.NET.ImageExport.fsproj | 4 +- .../Plotly.NET.Interactive.fsproj | 2 + src/Plotly.NET/AssemblyInfo.fs | 28 ----- src/Plotly.NET/Plotly.NET.fsproj | 5 +- 13 files changed, 250 insertions(+), 106 deletions(-) create mode 100644 key.snk delete mode 100644 src/Plotly.NET/AssemblyInfo.fs diff --git a/Plotly.NET.sln b/Plotly.NET.sln index 8a44815a5..1aef1b44c 100644 --- a/Plotly.NET.sln +++ b/Plotly.NET.sln @@ -8,6 +8,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "project", "project", "{BF60 .editorconfig = .editorconfig .config\dotnet-tools.json = .config\dotnet-tools.json global.json = global.json + key.snk = key.snk LICENSE = LICENSE README.md = README.md RELEASE_NOTES.md = RELEASE_NOTES.md diff --git a/build/BasicTasks.fs b/build/BasicTasks.fs index d34166477..cd6d1d51c 100644 --- a/build/BasicTasks.fs +++ b/build/BasicTasks.fs @@ -7,19 +7,56 @@ open Fake.IO.Globbing.Operators open ProjectInfo +/// Buildtask for setting a prerelease tag (also sets the mutable isPrerelease to true, and the PackagePrereleaseTag of all project infos accordingly.) let setPrereleaseTag = BuildTask.create "SetPrereleaseTag" [] { printfn "Please enter pre-release package suffix" let suffix = System.Console.ReadLine() prereleaseSuffix <- suffix - prereleaseTag <- (sprintf "%s-%s" release.NugetVersion suffix) isPrerelease <- true + projects + |> List.iter (fun p -> + p.PackagePrereleaseTag <- (sprintf "%s-%s" p.PackageVersionTag suffix) + ) + // + prereleaseTag <- (sprintf "%s-%s" CoreProject.PackageVersionTag suffix) } +/// cleans the bin, obj/obj dir of all projects and test projects, as well as the pkg dir. let clean = BuildTask.create "Clean" [] { !! "src/**/bin" ++ "src/**/obj" ++ "tests/**/bin" ++ "tests/**/obj" ++ "pkg" |> Shell.cleanDirs } -let build = - BuildTask.create "Build" [ clean ] { solutionFile |> DotNet.build id } +/// builds the solution file (dotnet build solution.sln) +let buildSolution = + BuildTask.create "BuildSolution" [ clean ] { solutionFile |> DotNet.build id } + +/// builds the individual project files (dotnet build project.*proj) +/// +/// The following MSBuild params are set for each project accordingly to the respective ProjectInfo: +/// +/// - AssemblyVersion +/// +/// - AssemblyInformationalVersion +let build = BuildTask.create "Build" [clean] { + projects + |> List.iter (fun pInfo -> + let proj = pInfo.ProjFile + proj + |> DotNet.build (fun p -> + let msBuildParams = + {p.MSBuildParams with + Properties = ([ + "AssemblyVersion", pInfo.AssemblyVersion + "InformationalVersion", pInfo.AssemblyInformationalVersion + ]) + } + { + p with + MSBuildParams = msBuildParams + } + |> DotNet.Options.withCustomParams (Some "--no-dependencies") + ) + ) +} \ No newline at end of file diff --git a/build/DocumentationTasks.fs b/build/DocumentationTasks.fs index 5103245ec..b3ba7af4d 100644 --- a/build/DocumentationTasks.fs +++ b/build/DocumentationTasks.fs @@ -8,12 +8,12 @@ open BlackFox.Fake let buildDocs = BuildTask.create "BuildDocs" [ build ] { - printfn "building docs with stable version %s" stableVersionTag + printfn "building docs with stable version %s" stableDocsVersionTag runDotNet (sprintf "fsdocs build --eval --clean --properties Configuration=Release --parameters fsdocs-package-version %s" - stableVersionTag) + stableDocsVersionTag) "./" } @@ -30,12 +30,12 @@ let buildDocsPrerelease = let watchDocs = BuildTask.create "WatchDocs" [ build ] { - printfn "watching docs with stable version %s" stableVersionTag + printfn "watching docs with stable version %s" stableDocsVersionTag runDotNet (sprintf "fsdocs watch --eval --clean --properties Configuration=Release --parameters fsdocs-package-version %s" - stableVersionTag) + stableDocsVersionTag) "./" } diff --git a/build/PackageTasks.fs b/build/PackageTasks.fs index 374670078..311caf0f8 100644 --- a/build/PackageTasks.fs +++ b/build/PackageTasks.fs @@ -8,31 +8,52 @@ open TestTasks open BlackFox.Fake open Fake.Core +open Fake.DotNet open Fake.IO.Globbing.Operators -let pack = - BuildTask.create "Pack" [ clean; build; runTests ] { - if promptYesNo (sprintf "creating stable package with version %s OK?" stableVersionTag) then - !! "src/**/*.*proj" -- "src/bin/*" - |> Seq.iter ( - Fake.DotNet.DotNet.pack (fun p -> - let msBuildParams = +let pack = BuildTask.create "Pack" [ clean; build; runTests ] { + projects + |> List.iter (fun pInfo -> + if promptYesNo $"creating stable package for {pInfo.Name}{System.Environment.NewLine}\tpackage version: {pInfo.PackageVersionTag}{System.Environment.NewLine}\tassembly version: {pInfo.AssemblyVersion}{System.Environment.NewLine}\tassembly informational version: {pInfo.AssemblyInformationalVersion}{System.Environment.NewLine} OK?" then + pInfo.ProjFile + |> Fake.DotNet.DotNet.pack (fun p -> + let msBuildParams = + match pInfo.ReleaseNotes with + | Some r -> + { p.MSBuildParams with + Properties = + ([ + "Version",pInfo.PackageVersionTag + "AssemblyVersion", pInfo.AssemblyVersion + "AssemblyInformationalVersion", pInfo.AssemblyVersion + "PackageReleaseNotes", (r.Notes |> String.concat "\r\n") + "TargetsForTfmSpecificContentInPackage", "" //https://github.com/dotnet/fsharp/issues/12320 + ] + @ p.MSBuildParams.Properties) + } + | _ -> { p.MSBuildParams with Properties = ([ - "Version", stableVersionTag - "PackageReleaseNotes", (release.Notes |> String.concat "\r\n") - ] - @ p.MSBuildParams.Properties) + "Version",pInfo.PackageVersionTag + "AssemblyVersion", pInfo.AssemblyVersion + "AssemblyInformationalVersion", pInfo.AssemblyVersion + "TargetsForTfmSpecificContentInPackage", "" //https://github.com/dotnet/fsharp/issues/12320 + ] + @ p.MSBuildParams.Properties) } + - { p with - MSBuildParams = msBuildParams - OutputPath = Some pkgDir - }) + { p with + MSBuildParams = msBuildParams + OutputPath = Some pkgDir + NoBuild = true + } + |> DotNet.Options.withCustomParams (Some "--no-dependencies") ) else failwith "aborted" + ) } let packPrerelease = @@ -44,26 +65,44 @@ let packPrerelease = build runTests ] { - if promptYesNo (sprintf "package tag will be %s OK?" prereleaseTag) then - !! "src/**/*.*proj" -- "src/bin/*" - |> Seq.iter ( - Fake.DotNet.DotNet.pack (fun p -> + projects + |> List.iter (fun pInfo -> + if promptYesNo $"creating prerelease package for {pInfo.Name}{System.Environment.NewLine}\tpackage version: {pInfo.PackagePrereleaseTag}{System.Environment.NewLine}\tassembly version: {pInfo.AssemblyVersion}{System.Environment.NewLine}\tassembly informational version: {pInfo.AssemblyInformationalVersion}{System.Environment.NewLine} OK?" then + pInfo.ProjFile + |> Fake.DotNet.DotNet.pack (fun p -> let msBuildParams = - { p.MSBuildParams with - Properties = - ([ - "Version", prereleaseTag - "PackageReleaseNotes", (release.Notes |> String.toLines) - ] - @ p.MSBuildParams.Properties) - } + match pInfo.ReleaseNotes with + | Some r -> + { p.MSBuildParams with + Properties = + ([ + "Version",pInfo.PackagePrereleaseTag + "AssemblyVersion", pInfo.AssemblyVersion + "InformationalVersion", pInfo.AssemblyInformationalVersion + "PackageReleaseNotes", (r.Notes |> String.concat "\r\n") + "TargetsForTfmSpecificContentInPackage", "" //https://github.com/dotnet/fsharp/issues/12320 + ]) + } + | _ -> + { p.MSBuildParams with + Properties = + ([ + "Version",pInfo.PackagePrereleaseTag + "AssemblyVersion", pInfo.AssemblyVersion + "InformationalVersion", pInfo.AssemblyInformationalVersion + "TargetsForTfmSpecificContentInPackage", "" //https://github.com/dotnet/fsharp/issues/12320 + ]) + } { p with VersionSuffix = Some prereleaseSuffix OutputPath = Some pkgDir MSBuildParams = msBuildParams - }) - ) - else - failwith "aborted" + NoBuild = true + } + |> DotNet.Options.withCustomParams (Some "--no-dependencies") + ) + else + failwith "aborted" + ) } diff --git a/build/ProjectInfo.fs b/build/ProjectInfo.fs index f3525a8ca..1f3d3e57e 100644 --- a/build/ProjectInfo.fs +++ b/build/ProjectInfo.fs @@ -2,40 +2,103 @@ open Fake.Core -let project = "Plotly.NET" +/// 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 testProjects = - [ - "tests/Plotly.NET.Tests/Plotly.NET.Tests.fsproj" - "tests/Plotly.NET.ImageExport.Tests/Plotly.NET.ImageExport.Tests.fsproj" - "tests/Plotly.NET.Tests.CSharp/Plotly.NET.Tests.CSharp.csproj" - ] +let projectName = "Plotly.NET" -let solutionFile = $"{project}.sln" - -let configuration = "Release" +let solutionFile = $"{projectName}.sln" let gitOwner = "plotly" +let gitHome = $"https://github.com/{gitOwner}" +let projectRepo = $"https://github.com/{gitOwner}/{projectName}" -let gitHome = - $"https://github.com/{gitOwner}" +/// packages are generated in this directory. +let pkgDir = "pkg" -let projectRepo = - $"https://github.com/{gitOwner}/{project}" +/// binaries are built using this configuration. +let configuration = "Release" -let pkgDir = "pkg" +let CoreTestProject = ProjectInfo.create("Plotly.NET.Tests", "tests/Plotly.NET.Tests/Plotly.NET.Tests.fsproj") +let ImageExportTestProject = ProjectInfo.create("Plotly.NET.ImageExport.Tests", "tests/Plotly.NET.ImageExport.Tests/Plotly.NET.ImageExport.Tests.fsproj") +let CSharpInteroperabilityTestProject = ProjectInfo.create("Plotly.NET.Tests.CSharpInteroperability", "tests/Plotly.NET.Tests.CSharpInteroperability/Plotly.NET.Tests.CSharpInteroperability.csproj") +let CSharpTestProject = ProjectInfo.create("Plotly.NET.CSharp.Tests", "tests/Plotly.NET.CSharp.Tests/Plotly.NET.CSharp.Tests.csproj") + +/// contains project info about all test projects +let testProjects = + [ + CoreTestProject + ImageExportTestProject + CSharpTestProject + ] + +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 release = - ReleaseNotes.load "RELEASE_NOTES.md" +/// contains project info about all projects +let projects = [ + CoreProject + InteractiveProject + ImageExportProject + CSharpProject +] -let stableVersion = - SemVer.parse release.NugetVersion +/// docs are always targeting the version of the core project +let stableDocsVersionTag = CoreProject.PackageVersionTag -let stableVersionTag = - (sprintf "%i.%i.%i" stableVersion.Major stableVersion.Minor stableVersion.Patch) +/// 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 diff --git a/build/ReleaseTasks.fs b/build/ReleaseTasks.fs index 57c28f4da..e7a9c5712 100644 --- a/build/ReleaseTasks.fs +++ b/build/ReleaseTasks.fs @@ -17,9 +17,9 @@ open Fake.IO.Globbing.Operators let createTag = BuildTask.create "CreateTag" [ clean; build; runTests; pack ] { - if promptYesNo (sprintf "tagging branch with %s OK?" stableVersionTag) then - Git.Branches.tag "" stableVersionTag - Git.Branches.pushTag "" projectRepo stableVersionTag + if promptYesNo (sprintf "tagging branch with %s OK?" branchTag) then + Git.Branches.tag "" branchTag + Git.Branches.pushTag "" projectRepo branchTag else failwith "aborted" } @@ -47,13 +47,19 @@ let publishNuget = let targets = (!!(sprintf "%s/*.*pkg" pkgDir)) + printfn "package files:" + for target in targets do printfn "%A" target - let msg = - sprintf "release package with version %s?" stableVersionTag + printfn "package versions to release:" - if promptYesNo msg then + projects + |> List.iter (fun p -> + printfn $"{p.Name} @ {p.PackageVersionTag}" + ) + + if promptYesNo "OK?" then let source = "https://api.nuget.org/v3/index.json" @@ -82,13 +88,19 @@ let publishNugetPrerelease = let targets = (!!(sprintf "%s/*.*pkg" pkgDir)) + printfn "package files:" + for target in targets do printfn "%A" target - let msg = - sprintf "release package with version %s?" prereleaseTag + printfn "package versions to release:" - if promptYesNo msg then + projects + |> List.iter (fun p -> + printfn $"{p.Name} @ {p.PackagePrereleaseTag}" + ) + + if promptYesNo "OK?" then let source = "https://api.nuget.org/v3/index.json" @@ -108,7 +120,7 @@ let publishNugetPrerelease = let releaseDocs = BuildTask.create "ReleaseDocs" [ buildDocs ] { let msg = - sprintf "release docs for version %s?" stableVersionTag + sprintf "release docs for version %s?" stableDocsVersionTag if promptYesNo msg then Shell.cleanDir "temp" @@ -122,7 +134,7 @@ let releaseDocs = Git.CommandHelper.runSimpleGitCommand "temp/gh-pages" "add ." |> printfn "%s" let cmd = - sprintf """commit -a -m "Update generated documentation for version %s""" stableVersionTag + sprintf """commit -a -m "Update generated documentation for version %s""" stableDocsVersionTag Git.CommandHelper.runSimpleGitCommand "temp/gh-pages" cmd |> printfn "%s" Git.Branches.push "temp/gh-pages" diff --git a/build/TestTasks.fs b/build/TestTasks.fs index 6f48fd16c..0b7824dff 100644 --- a/build/TestTasks.fs +++ b/build/TestTasks.fs @@ -6,10 +6,23 @@ open Fake.DotNet open ProjectInfo open BasicTasks +let buildTests = BuildTask.create "BuildTests" [clean; build] { + testProjects + |> List.iter (fun pInfo -> + let proj = pInfo.ProjFile + proj + |> DotNet.build (fun p -> + p + |> DotNet.Options.withCustomParams (Some "--no-dependencies") + ) + ) +} + +/// runs the individual test projects via `dotnet test` let runTests = - BuildTask.create "RunTests" [ clean; build ] { + BuildTask.create "RunTests" [ clean; build; buildTests ] { testProjects - |> Seq.iter (fun testProject -> + |> Seq.iter (fun testProjectInfo -> Fake.DotNet.DotNet.test (fun testParams -> { testParams with @@ -17,7 +30,7 @@ let runTests = Configuration = DotNet.BuildConfiguration.fromString configuration NoBuild = true }) - testProject) + testProjectInfo.ProjFile) } // to do: use this once we have actual tests @@ -27,7 +40,7 @@ let runTestsWithCodeCov = Fake.DotNet.MSBuild.CliArguments.Create() testProjects - |> Seq.iter (fun testProject -> + |> Seq.iter (fun testProjectInfo -> Fake.DotNet.DotNet.test (fun testParams -> { testParams with @@ -42,5 +55,5 @@ let runTestsWithCodeCov = } Logger = Some "console;verbosity=detailed" }) - testProject) + testProjectInfo.ProjFile) } diff --git a/key.snk b/key.snk new file mode 100644 index 0000000000000000000000000000000000000000..000e81f6b2155c6eb920d13264936c7be7c1f163 GIT binary patch literal 596 zcmV-a0;~N80ssI2Bme+XQ$aES1ONa50096Q*INiyEpqyB_hVDcn=*$$J&uHu=3vA{ z#Y#O5N7X1BJ^4ZKZC90gz&U3JH0JUAg@Qcn^ELr(M{R`bo#sIY-w9_H>pY4i``W@` zM!x}EX;)5&>GOtWii}{$8ovhHhB(D;c^Q4h}(ly^TEJVE@YVU8j9KDDttV zIHYJE5Exnov_(px2?72ee&QK`mop+Fry!=jX27WFInqk04ZHQLb6#rjtOt+@SSRN; zwNzm!6NaS346@Nbs&%?*oq^$Dzkx9#=hQtsU2h@A{O#UyY@I$?NUwy%d>%+?w+rYI zoH#$y(xF8snvqqN52JW+yE+R1Q$5+6*9KUDv$c?jrnOvLCieD2HN6uey5W5Js^#Ry zUQX40K0(Vo&u@+C8hSTr9r~z9net6.0 enable enable + true + ../../key.snk diff --git a/src/Plotly.NET.ImageExport/Plotly.NET.ImageExport.fsproj b/src/Plotly.NET.ImageExport/Plotly.NET.ImageExport.fsproj index 1bd082d3a..8f3f58195 100644 --- a/src/Plotly.NET.ImageExport/Plotly.NET.ImageExport.fsproj +++ b/src/Plotly.NET.ImageExport/Plotly.NET.ImageExport.fsproj @@ -4,6 +4,8 @@ netstandard2.0 true 3390;$(WarnOn) + true + ../../key.snk @@ -38,7 +40,7 @@ - + diff --git a/src/Plotly.NET.Interactive/Plotly.NET.Interactive.fsproj b/src/Plotly.NET.Interactive/Plotly.NET.Interactive.fsproj index 92ee802c5..d7ddb32dc 100644 --- a/src/Plotly.NET.Interactive/Plotly.NET.Interactive.fsproj +++ b/src/Plotly.NET.Interactive/Plotly.NET.Interactive.fsproj @@ -11,6 +11,8 @@ true true + true + ../../key.snk snupkg $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb diff --git a/src/Plotly.NET/AssemblyInfo.fs b/src/Plotly.NET/AssemblyInfo.fs deleted file mode 100644 index bf22907f0..000000000 --- a/src/Plotly.NET/AssemblyInfo.fs +++ /dev/null @@ -1,28 +0,0 @@ -// Auto-Generated by FAKE; do not edit -namespace System - -open System.Reflection - -[] -[] -[] -[] -[] -do () - -module internal AssemblyVersionInformation = - [] - let AssemblyTitle = "Plotly.NET" - - [] - let AssemblyProduct = "Plotly.NET" - - [] - let AssemblyDescription = - "A F# interactive charting library using plotly.js" - - [] - let AssemblyVersion = "2.0.0" - - [] - let AssemblyFileVersion = "2.0.0" diff --git a/src/Plotly.NET/Plotly.NET.fsproj b/src/Plotly.NET/Plotly.NET.fsproj index f5228d875..bcc9cabed 100644 --- a/src/Plotly.NET/Plotly.NET.fsproj +++ b/src/Plotly.NET/Plotly.NET.fsproj @@ -14,6 +14,8 @@ true true + true + ../../key.snk snupkg $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb Debug;Release;Dotnet @@ -34,7 +36,6 @@ - @@ -151,7 +152,7 @@ - + From c74043f4db8aaceaf74f9bef7e71051861b7ff7a Mon Sep 17 00:00:00 2001 From: Kevin Schneider Date: Wed, 15 Jun 2022 09:40:06 +0200 Subject: [PATCH 4/4] Add package metadata for Plotly.NET.CSharp --- .../Plotly.NET.CSharp.csproj | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/Plotly.NET.CSharp/Plotly.NET.CSharp.csproj b/src/Plotly.NET.CSharp/Plotly.NET.CSharp.csproj index a4c9e9f47..c06f215ac 100644 --- a/src/Plotly.NET.CSharp/Plotly.NET.CSharp.csproj +++ b/src/Plotly.NET.CSharp/Plotly.NET.CSharp.csproj @@ -4,11 +4,39 @@ net6.0 enable enable + Plotly.NET.CSharp + Plotly.NET.CSharp + Library + + true + + true + + true + true true ../../key.snk + snupkg + true + ../../key.snk + + + + Kevin Schneider, F# open source contributors + Native C# bindings for Plotly.NET 📈🚀. + Native C# bindings for Plotly.NET 📈🚀. + MIT + https://plotly.net + logo.png + visualization charting plotly fsharp csharp + https://github.com/plotly/Plotly.NET/ + git + https://github.com/plotly/Plotly.NET/blob/dev/LICENSE + https://github.com/plotly/Plotly.NET/blob/dev/RELEASE_NOTES.md +