diff --git a/Plotly.NET.sln b/Plotly.NET.sln index 71e035ef3..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 @@ -107,12 +108,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 +145,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 +153,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 +198,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 +222,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 +242,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/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 000000000..000e81f6b Binary files /dev/null and b/key.snk differ diff --git a/src/Plotly.NET.CSharp/Plotly.NET.CSharp.csproj b/src/Plotly.NET.CSharp/Plotly.NET.CSharp.csproj index 132d856c4..c06f215ac 100644 --- a/src/Plotly.NET.CSharp/Plotly.NET.CSharp.csproj +++ b/src/Plotly.NET.CSharp/Plotly.NET.CSharp.csproj @@ -4,9 +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 + 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..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 @@ -22,6 +24,7 @@ + @@ -37,7 +40,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..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 @@ -38,8 +40,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/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 a126fab4e..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 @@ -32,8 +34,8 @@ https://github.com/plotly/Plotly.NET/blob/dev/RELEASE_NOTES.md + - @@ -125,7 +127,6 @@ - @@ -151,7 +152,7 @@ - + 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 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