diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index c8da98a..73f78b3 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -2,28 +2,22 @@ "version": 1, "isRoot": true, "tools": { - "fantomas-tool": { - "version": "4.7.6", - "commands": [ - "fantomas" - ] - }, "dotnet-fsharplint": { - "version": "0.21.2", + "version": "0.21.3", "commands": [ "dotnet-fsharplint" ] }, "paket": { - "version": "7.1.4", + "version": "7.2.1", "commands": [ "paket" ] }, - "fake-cli": { - "version": "5.23.0", + "fantomas": { + "version": "6.1.1", "commands": [ - "fake" + "fantomas" ] } } diff --git a/.editorconfig b/.editorconfig index 393a6b3..9d67535 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,6 +1,7 @@ -[*.fs] +[*.{fs,fsx}] fsharp_max_value_binding_width = 80 fsharp_max_infix_operator_expression = 70 +fsharp_max_if_then_short_width = 50 [*.md] max_line_length = 100 \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 38c11d2..682c842 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,11 +12,9 @@ jobs: steps: - uses: actions/checkout@v3 - name: Set up .NET - uses: xt0rted/setup-dotnet@v1.0.0 - - name: Install dependencies - run: | - dotnet tool restore - dotnet paket restore + uses: actions/setup-dotnet@v3 + with: + dotnet-version: '6.0.x' - name: Set up dependency caching for faster builds uses: actions/cache@v3 with: @@ -24,7 +22,11 @@ jobs: key: ${{ runner.os }}-paket-${{ hashFiles('**/paket.lock') }} restore-keys: | ${{ runner.os }}-paket- + - name: Install dependencies + run: | + dotnet tool restore + dotnet paket restore - name: Test code - run: dotnet fake build -t Check + run: ./build.sh -t Check - name: Create release draft - run: dotnet fake build -t Release + run: ./build.sh -t Release diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7d08ce9..ec5d998 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,11 +12,9 @@ jobs: steps: - uses: actions/checkout@v3 - name: Set up .NET - uses: xt0rted/setup-dotnet@v1.0.0 - - name: Install dependencies - run: | - dotnet tool restore - dotnet paket restore + uses: actions/setup-dotnet@v3 + with: + dotnet-version: '6.0.x' - name: Set up dependency caching for faster builds uses: actions/cache@v3 with: @@ -24,5 +22,9 @@ jobs: key: ${{ runner.os }}-paket-${{ hashFiles('**/paket.lock') }} restore-keys: | ${{ runner.os }}-paket- + - name: Install dependencies + run: | + dotnet tool restore + dotnet paket restore - name: Run code checks - run: dotnet fake build -t Check \ No newline at end of file + run: ./build.sh -t Check \ No newline at end of file diff --git a/.gitignore b/.gitignore index a5ddad6..0d5a146 100644 --- a/.gitignore +++ b/.gitignore @@ -291,7 +291,7 @@ PublishScripts/ # The packages folder can be ignored because of Package Restore **/[Pp]ackages/* # except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ +#!**/[Pp]ackages/build/ # Uncomment if necessary however generally it will be regenerated when needed #!**/[Pp]ackages/repositories.config # NuGet v3's project.json files produces more ignorable files diff --git a/.idea/.idea.RoonTagger/.idea/indexLayout.xml b/.idea/.idea.RoonTagger/.idea/indexLayout.xml index b564d50..3016c27 100644 --- a/.idea/.idea.RoonTagger/.idea/indexLayout.xml +++ b/.idea/.idea.RoonTagger/.idea/indexLayout.xml @@ -12,9 +12,13 @@ .gitignore .markdownlint.yaml README.md + build.cmd build.fsx + build.sh global.json - + + docs + \ No newline at end of file diff --git a/README.md b/README.md index 809d62e..43ebaee 100644 --- a/README.md +++ b/README.md @@ -22,10 +22,14 @@ dotnet test We also use [Fake][] for running some build/test tasks. For help run: ```powershell -dotnet fake build +.\build # on Windows ``` -This will list the main targets to run. These targets are also running in CI. +```shell +./build.sh # on mac/linux +``` + +This will show the build system Usage. It could be used in CI. ### Refreshing Roles List diff --git a/Resources/ReleaseTemplate.md b/Resources/ReleaseTemplate.md index 67feae2..1c4d2b2 100644 --- a/Resources/ReleaseTemplate.md +++ b/Resources/ReleaseTemplate.md @@ -4,15 +4,33 @@ TODO: Fill release notes ... ### Installation Instructions +#### Archives + There are two kinds of archives: -* `roon-tagger-xxx-noarch.*` - These are small and contains only the - application. They do require that you have _.Net 6.x_ runtime installed. -* `roon-tagger-xxx-.*` - These contains everything you need to run - _roon-tagger_. If your architecture is not suuported (e.g. you're using a 32 - bit or ARM processor), please file an issue. +* `roon-tagger-xxx-noarch.*` - These are small and contains only the application. They do require + that you have _.Net 6.x_ runtime installed. +* `roon-tagger-xxx-.*` - These contains everything you need to run _roon-tagger_. If your + architecture is not suuported (e.g. you're using a 32 bit or ARM processor), please file an issue. + +Installation is currently manual. You need to extract the archive to somewhere in your computer. In +_Windows_ you should add the directory you extracted to to the `PATH`. On _Linux_ / _MacOS you can +symlink the `roon-tagger` executable to somewhere in your `PATH`. + +#### Scoop File + +[Scoop][scoop] support is currently experimental *and* manual. You can install *Roon Tagger* with +scoop using the direct manifest URL: + +* Copy the URL of the `roon-tagger.json` file in the current release assets. +* Install roon-tagger using the address copied above: + + scoop install +* Uninstall with: + + scoop uninstall roon-tagger + +> **Warning** +> only 64bit systems are supported. for other architecture please file an issue. -Installation is currently manual. You need to extract the archive to somewhere -in your computer. In _Windows_ you should add the directory you extracted to to -the `PATH`. On linux/osx you can symlink the `roon-tagger` executable to -somewhere in your `PATH`. +[scoop]: https://scoop.sh \ No newline at end of file diff --git a/RoonTagger.sln b/RoonTagger.sln index ed59065..f54b5ea 100644 --- a/RoonTagger.sln +++ b/RoonTagger.sln @@ -18,6 +18,8 @@ Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Metadata.Test", "src\Metada EndProject Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "RoonTagger.Cli.Test", "src\RoonTagger.Cli.Test\RoonTagger.Cli.Test.fsproj", "{C21A6273-1B76-4993-85AA-DC73F8E54770}" EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Build", "build\Build.fsproj", "{3342B827-FC6D-419D-A2CB-1D4D25D3714E}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -79,6 +81,17 @@ Global {C21A6273-1B76-4993-85AA-DC73F8E54770}.Release|x64.Build.0 = Release|Any CPU {C21A6273-1B76-4993-85AA-DC73F8E54770}.Release|x86.ActiveCfg = Release|Any CPU {C21A6273-1B76-4993-85AA-DC73F8E54770}.Release|x86.Build.0 = Release|Any CPU + {3342B827-FC6D-419D-A2CB-1D4D25D3714E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3342B827-FC6D-419D-A2CB-1D4D25D3714E}.Debug|x64.ActiveCfg = Debug|Any CPU + {3342B827-FC6D-419D-A2CB-1D4D25D3714E}.Debug|x64.Build.0 = Debug|Any CPU + {3342B827-FC6D-419D-A2CB-1D4D25D3714E}.Debug|x86.ActiveCfg = Debug|Any CPU + {3342B827-FC6D-419D-A2CB-1D4D25D3714E}.Debug|x86.Build.0 = Debug|Any CPU + {3342B827-FC6D-419D-A2CB-1D4D25D3714E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3342B827-FC6D-419D-A2CB-1D4D25D3714E}.Release|Any CPU.Build.0 = Release|Any CPU + {3342B827-FC6D-419D-A2CB-1D4D25D3714E}.Release|x64.ActiveCfg = Release|Any CPU + {3342B827-FC6D-419D-A2CB-1D4D25D3714E}.Release|x64.Build.0 = Release|Any CPU + {3342B827-FC6D-419D-A2CB-1D4D25D3714E}.Release|x86.ActiveCfg = Release|Any CPU + {3342B827-FC6D-419D-A2CB-1D4D25D3714E}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {C57CC9D3-5427-4940-9A6D-FA40901CDA62} = {7C6DD87A-C2D8-4A7F-A00F-F6C9F1ED6203} diff --git a/build.cmd b/build.cmd new file mode 100644 index 0000000..49740ee --- /dev/null +++ b/build.cmd @@ -0,0 +1,6 @@ +@echo off +echo Restoring dotnet tools... +dotnet tool restore +dotnet paket restore + +dotnet run --project ./build/build.fsproj -- %* diff --git a/build.fsx b/build.fsx deleted file mode 100644 index bdc1d7c..0000000 --- a/build.fsx +++ /dev/null @@ -1,326 +0,0 @@ -#r "paket: -nuget Fake.Api.GitHub -nuget Fake.Core.UserInput -nuget Fake.DotNet.Cli -nuget Fake.IO.FileSystem -nuget Fake.IO.Zip -nuget Fake.Core.Process -nuget Fake.Core.Target -nuget Fake.Tools.Git -nuget FSharpx.Extras 3.1.0 //" -#load ".fake/build.fsx/intellisense.fsx" - -open Fake.Api -open Fake.Core -open Fake.DotNet -open Fake.IO -open Fake.IO.FileSystemOperators -open Fake.IO.Globbing.Operators -open Fake.Core.TargetOperators -open FSharpx.Option - -let args = Target.getArguments () -let repoRoot = __SOURCE_DIRECTORY__ -let outputDir = repoRoot @@ "output" -let buildDir = outputDir @@ "build" -let distDir = outputDir @@ "dist" -let srcDir = repoRoot @@ "src" -let mainSln = repoRoot @@ "RoonTagger.sln" - -let cliProj = - srcDir - @@ "RoonTagger.Cli" @@ "RoonTagger.Cli.fsproj" - -[] -module Helpers = - open System.Text.RegularExpressions - - let log msg = Trace.log $"===> {msg}" - - let parseVersion = - function - | Some version -> version - | None -> failwith "No Version - either HEAD should be a tag or version override must be specified" - - // Normalizes versions to be valid dotnet version (e.g. v1.2.3 -> 1.2.3). - let normalizeVersion (version: string) = - let rgx = Regex "^[a-z,A-Z]+" - rgx.Replace(version, "") - -[] -module Outputs = - - type Archive = - | TarGz - | Zip - - type Target = - | NoArch - | WinX64 - | LinuxX64 - | OsxX64 - - type OutputFormat = OutputFormat of Target * Archive - - let toRID target = - match target with - | NoArch -> "noarch" - | WinX64 -> "win-x64" - | LinuxX64 -> "linux-x64" - | OsxX64 -> "osx-x64" - -[] -module GitHelpers = - open Fake.Tools.Git - - let extractVersionFromTag () = - let describe = Information.describe repoRoot - let lastTag = Information.getLastTag () - - if (describe = lastTag) then - Some lastTag - else - None - - let promptGithubToken () = - let tokenEnv = "GITHUB_TOKEN" - - let prompt () = - UserInput.getUserPassword "Github token: " - - Environment.environVarOrNone tokenEnv - |> Option.defaultWith prompt - -[] -module Archives = - - let compressZip dirName = - log $"Creating ZIP archive from '{dirName}'" - let source = buildDir @@ dirName - let zipFile = distDir @@ $"{dirName}.zip" - !! $"{source}/**/*" |> Zip.zip buildDir zipFile - - let compressTarGzip dirName = - log $"Creating TAR archive from '{dirName}'" - let tarFile = distDir @@ $"{dirName}.tar.gz" - let args = [ "czf"; tarFile; dirName ] |> String.concat " " - let result = Shell.Exec("tar", args, buildDir) - - if result <> 0 then - failwith $"Failed to create tar from '{dirName}'. Check errors above." - -let outputCombinations = - [ OutputFormat(NoArch, Zip) - OutputFormat(NoArch, TarGz) - OutputFormat(WinX64, Zip) - OutputFormat(OsxX64, Zip) - OutputFormat(LinuxX64, TarGz) ] - -let buildConfig = - lazy - match args with - | Some args -> - if Seq.contains "--release" args then - Some DotNet.BuildConfiguration.Release - else if Seq.contains "--debug" args then - Some DotNet.BuildConfiguration.Debug - else - None - | None -> None - -let versionOverride = - maybe { - let! args = args - let! idx = Seq.tryFindIndex (fun s -> s = "--version") args - let! version = Seq.tryItem (idx + 1) args - - if System.String.IsNullOrEmpty version then - return! None - else - return version - } - -let version = lazy Option.orElse versionOverride (extractVersionFromTag ()) - -let publishArch dir rid version = - let buildConfig = - Option.defaultValue DotNet.BuildConfiguration.Release buildConfig.Value - - log $"Publishing RoonTagger to runtime {rid}" - - DotNet.publish - (fun p -> - { p with - Runtime = Some rid - Configuration = buildConfig - SelfContained = Some true - OutputPath = Some(buildDir @@ dir) - MSBuildParams = - { p.MSBuildParams with - Properties = - ("PublishSingleFile", "true") - :: ("PublishTrimmed", "true") - :: ("PublishReadyToRun", "true") - :: ("Version", version) :: p.MSBuildParams.Properties } }) - cliProj - -let publishNoArch dir version = - let buildConfig = - Option.defaultValue DotNet.BuildConfiguration.Release buildConfig.Value - - log "Publishing RoonTagger to NoArch" - - DotNet.publish - (fun p -> - { p with - Configuration = buildConfig - OutputPath = Some(buildDir @@ dir) - MSBuildParams = - { p.MSBuildParams with - Properties = - // Explicit because specified as true in the project file. - ("PublishTrimmed", "false") - :: ("Version", version) :: p.MSBuildParams.Properties } }) - cliProj - -Target.create "CodeCheck" ignore -Target.create "Check" ignore - -Target.create "Build" (fun _ -> - let buildConfig = - Option.defaultValue DotNet.BuildConfiguration.Release buildConfig.Value - - let version = parseVersion version.Value - let dotNetVersion = normalizeVersion version - Trace.traceHeader $"Building with '{buildConfig}' profile" - - DotNet.build - (fun p -> - { p with - Configuration = buildConfig - MSBuildParams = - { p.MSBuildParams with - Properties = - ("Version", dotNetVersion) - :: p.MSBuildParams.Properties } }) - mainSln) - -Target.create "Clean" (fun _ -> - Trace.traceHeader "Running dotnet clean" - let result = DotNet.exec id "clean" mainSln - - if not result.OK then - failwith $"Error running 'Clean' - check above for errors") - -Target.create "FullClean" (fun _ -> - Trace.traceHeader "Performing Full Clean" - - !! "src/*/obj" ++ "src/*/bin" ++ "output" - |> File.deleteAll) - -Target.create "Lint" (fun _ -> - Trace.traceHeader "Linting the project" - - let result = - [ "lint"; mainSln ] - |> String.concat " " - |> DotNet.exec id "fsharplint" - - if not result.OK then - failwith "Linting errors found. See output above") - -Target.create "Format" (fun _ -> - Trace.traceHeader "Check project formatting" - - let result = - [ repoRoot; "--recurse"; "--check" ] - |> String.concat " " - |> DotNet.exec id "fantomas" - - if not result.OK then - failwith "Formatting errors found. See output above") - -Target.create "Test" (fun _ -> - let buildConfig = - Option.defaultValue DotNet.BuildConfiguration.Debug buildConfig.Value - - Trace.traceHeader $"Testing with '{buildConfig}' profile" - DotNet.test (fun s -> { s with Configuration = buildConfig }) mainSln) - -Target.create "Publish" (fun _ -> - let version = parseVersion version.Value - let dotNetVersion = normalizeVersion version - Shell.cleanDir outputDir - Shell.mkdir buildDir - Shell.mkdir distDir - - for OutputFormat (target, archive) in outputCombinations do - let rid = toRID target - let dir = $"roon-tagger_{version}_{rid}" - - match target with - | NoArch -> publishNoArch dir dotNetVersion - | WinX64 - | LinuxX64 - | OsxX64 -> publishArch dir rid dotNetVersion - - match archive with - | Zip -> compressZip dir - | TarGz -> compressTarGzip dir) - -Target.create "Release" (fun _ -> - Trace.traceHeader "Creating draft release" - - if version.Value.IsNone then - failwith "No Version - either HEAD should be a tag or version override must be specified" - - let version = Option.get version.Value - let files = !! "output/dist/*.zip" ++ "output/dist/*.tar.gz" - - let contents = - repoRoot @@ "Resources" @@ "ReleaseTemplate.md" - |> System.IO.File.ReadLines - - promptGithubToken () - |> GitHub.createClientWithToken - |> GitHub.draftNewRelease "babysnakes" "roon-tagger" version false contents - |> GitHub.uploadFiles files - |> Async.RunSynchronously - |> ignore) - -Target.create "Help" (fun _ -> - let msg = - """ -Fake build for RoonTagger. - -Usage: - * dotnet fake build [ -t task ] [ options ] - * dotnet fake build --help - -tasks: - * Help - show help (default task if no task is specified) - * Test - run project tests - * CodeCheck - check linting and formatting - * Check - run all project checks - * Build - Build the project (by default in Release mode) - * Publish - Create archives of roon-tagger for all supported platforms. - * Release - Create github draft release (with the published files). - -options: - --version VERSION Override git tag as version. - --release Force 'Release' mode on tests. - --debug Force 'Debug' mode on Build / Publish / Release. -""" - - Trace.log msg) - -// Tasks dependencies -"Clean" ?=> "Build" -"Clean" ?=> "Publish" ==> "Release" -"Clean" ==> "Release" -"Format" ==> "Lint" ==> "CodeCheck" -"Test" ==> "Check" -"CodeCheck" ==> "Check" -"Clean" ==> "Check" - -Target.runOrDefaultWithArguments "Help" diff --git a/build.fsx.lock b/build.fsx.lock deleted file mode 100644 index 7d2e91f..0000000 --- a/build.fsx.lock +++ /dev/null @@ -1,261 +0,0 @@ -STORAGE: NONE -RESTRICTION: || (== net6.0) (== netstandard2.0) -NUGET - remote: https://api.nuget.org/v3/index.json - BlackFox.VsWhere (1.1) - FSharp.Core (>= 4.2.3) - Microsoft.Win32.Registry (>= 4.7) - Fake.Api.GitHub (5.23) - FSharp.Core (>= 6.0) - Octokit (>= 0.50) - Fake.Core.CommandLineParsing (5.23) - FParsec (>= 1.1.1) - FSharp.Core (>= 6.0) - Fake.Core.Context (5.23) - FSharp.Core (>= 6.0) - Fake.Core.Environment (5.23) - FSharp.Core (>= 6.0) - Fake.Core.FakeVar (5.23) - Fake.Core.Context (>= 5.23) - FSharp.Core (>= 6.0) - Fake.Core.Process (5.23) - Fake.Core.Environment (>= 5.23) - Fake.Core.FakeVar (>= 5.23) - Fake.Core.String (>= 5.23) - Fake.Core.Trace (>= 5.23) - Fake.IO.FileSystem (>= 5.23) - FSharp.Core (>= 6.0) - System.Collections.Immutable (>= 5.0) - Fake.Core.SemVer (5.23) - FSharp.Core (>= 6.0) - Fake.Core.String (5.23) - FSharp.Core (>= 6.0) - Fake.Core.Target (5.23) - Fake.Core.CommandLineParsing (>= 5.23) - Fake.Core.Context (>= 5.23) - Fake.Core.Environment (>= 5.23) - Fake.Core.FakeVar (>= 5.23) - Fake.Core.Process (>= 5.23) - Fake.Core.String (>= 5.23) - Fake.Core.Trace (>= 5.23) - FSharp.Control.Reactive (>= 5.0.2) - FSharp.Core (>= 6.0) - Fake.Core.Tasks (5.23) - Fake.Core.Trace (>= 5.23) - FSharp.Core (>= 6.0) - Fake.Core.Trace (5.23) - Fake.Core.Environment (>= 5.23) - Fake.Core.FakeVar (>= 5.23) - FSharp.Core (>= 6.0) - Fake.Core.UserInput (5.23) - FSharp.Core (>= 6.0) - Fake.Core.Xml (5.23) - Fake.Core.String (>= 5.23) - FSharp.Core (>= 6.0) - Fake.DotNet.Cli (5.23) - Fake.Core.Environment (>= 5.23) - Fake.Core.Process (>= 5.23) - Fake.Core.String (>= 5.23) - Fake.Core.Trace (>= 5.23) - Fake.DotNet.MSBuild (>= 5.23) - Fake.DotNet.NuGet (>= 5.23) - Fake.IO.FileSystem (>= 5.23) - FSharp.Core (>= 6.0) - Mono.Posix.NETStandard (>= 1.0) - Newtonsoft.Json (>= 13.0.1) - Fake.DotNet.MSBuild (5.23) - BlackFox.VsWhere (>= 1.1) - Fake.Core.Environment (>= 5.23) - Fake.Core.Process (>= 5.23) - Fake.Core.String (>= 5.23) - Fake.Core.Trace (>= 5.23) - Fake.IO.FileSystem (>= 5.23) - FSharp.Core (>= 6.0) - MSBuild.StructuredLogger (>= 2.1.545) - Fake.DotNet.NuGet (5.23) - Fake.Core.Environment (>= 5.23) - Fake.Core.Process (>= 5.23) - Fake.Core.SemVer (>= 5.23) - Fake.Core.String (>= 5.23) - Fake.Core.Tasks (>= 5.23) - Fake.Core.Trace (>= 5.23) - Fake.Core.Xml (>= 5.23) - Fake.IO.FileSystem (>= 5.23) - Fake.Net.Http (>= 5.23) - FSharp.Core (>= 6.0) - Newtonsoft.Json (>= 13.0.1) - NuGet.Protocol (>= 5.11) - Fake.IO.FileSystem (5.23) - Fake.Core.String (>= 5.23) - FSharp.Core (>= 6.0) - Fake.IO.Zip (5.23) - Fake.Core.String (>= 5.23) - Fake.IO.FileSystem (>= 5.23) - FSharp.Core (>= 6.0) - Fake.Net.Http (5.23) - Fake.Core.Trace (>= 5.23) - FSharp.Core (>= 6.0) - Fake.Tools.Git (5.23) - Fake.Core.Environment (>= 5.23) - Fake.Core.Process (>= 5.23) - Fake.Core.SemVer (>= 5.23) - Fake.Core.String (>= 5.23) - Fake.Core.Trace (>= 5.23) - Fake.IO.FileSystem (>= 5.23) - FSharp.Core (>= 6.0) - FParsec (1.1.1) - FSharp.Core (>= 4.3.4) - FSharp.Control.AsyncSeq (3.2.1) - FSharp.Core (>= 4.7.2) - Microsoft.Bcl.AsyncInterfaces (>= 5.0) - FSharp.Control.Reactive (5.0.5) - FSharp.Core (>= 4.7.2) - System.Reactive (>= 5.0 < 6.0) - FSharp.Core (6.0.6) - FSharpx.Async (1.14.1) - FSharp.Control.AsyncSeq (>= 2.0.21) - FSharp.Core (>= 4.6.2) - FSharpx.Collections (3.0.1) - FSharp.Core (>= 4.3.4) - FSharpx.Extras (3.1) - FSharp.Core (>= 4.6.2) - FSharpx.Async (>= 1.14.1) - FSharpx.Collections (>= 2.1.2) - System.Reflection.Emit.Lightweight (>= 4.7) - Microsoft.Bcl.AsyncInterfaces (6.0) - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - Microsoft.Build (17.3.1) - Microsoft.Build.Framework (>= 17.3.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - Microsoft.NET.StringTools (>= 17.3.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - System.Collections.Immutable (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - System.Configuration.ConfigurationManager (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - System.Reflection.Metadata (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - System.Reflection.MetadataLoadContext (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - System.Security.Principal.Windows (>= 5.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - System.Text.Encoding.CodePages (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - System.Text.Json (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - System.Threading.Tasks.Dataflow (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - Microsoft.Build.Framework (17.3.1) - System.Security.Permissions (>= 6.0) - Microsoft.Build.Tasks.Core (17.3.1) - Microsoft.Build.Framework (>= 17.3.1) - Microsoft.Build.Utilities.Core (>= 17.3.1) - Microsoft.NET.StringTools (>= 17.3.1) - Microsoft.Win32.Registry (>= 5.0) - restriction: == netstandard2.0 - System.CodeDom (>= 6.0) - System.Collections.Immutable (>= 6.0) - System.Reflection.Metadata (>= 6.0) - System.Resources.Extensions (>= 6.0) - System.Security.Cryptography.Pkcs (>= 6.0.1) - System.Security.Cryptography.Xml (>= 6.0) - System.Security.Permissions (>= 6.0) - System.Threading.Tasks.Dataflow (>= 6.0) - Microsoft.Build.Utilities.Core (17.3.1) - Microsoft.Build.Framework (>= 17.3.1) - Microsoft.NET.StringTools (>= 17.3.1) - Microsoft.Win32.Registry (>= 5.0) - restriction: == netstandard2.0 - System.Collections.Immutable (>= 6.0) - System.Configuration.ConfigurationManager (>= 6.0) - System.Security.Permissions (>= 6.0) - restriction: == netstandard2.0 - System.Text.Encoding.CodePages (>= 6.0) - restriction: == netstandard2.0 - Microsoft.NET.StringTools (17.3.1) - System.Memory (>= 4.5.5) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - Microsoft.NETCore.Platforms (6.0.5) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (&& (== net6.0) (< netstandard1.2)) (&& (== net6.0) (< netstandard1.3)) (&& (== net6.0) (< netstandard1.5)) (== netstandard2.0) - Microsoft.NETCore.Targets (5.0) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (&& (== net6.0) (< netstandard1.2)) (&& (== net6.0) (< netstandard1.3)) (&& (== net6.0) (< netstandard1.5)) (== netstandard2.0) - Microsoft.Win32.Registry (5.0) - System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= monoandroid) (< netstandard1.3)) (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) - System.Memory (>= 4.5.4) - restriction: || (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (< netcoreapp2.1)) (&& (== net6.0) (>= uap10.1)) (== netstandard2.0) - System.Security.AccessControl (>= 5.0) - System.Security.Principal.Windows (>= 5.0) - Microsoft.Win32.SystemEvents (6.0.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) - Mono.Posix.NETStandard (1.0) - MSBuild.StructuredLogger (2.1.669) - Microsoft.Build (>= 16.10) - Microsoft.Build.Framework (>= 16.10) - Microsoft.Build.Tasks.Core (>= 16.10) - Microsoft.Build.Utilities.Core (>= 16.10) - Newtonsoft.Json (13.0.1) - NuGet.Common (6.3) - NuGet.Frameworks (>= 6.3) - NuGet.Configuration (6.3) - NuGet.Common (>= 6.3) - System.Security.Cryptography.ProtectedData (>= 4.4) - NuGet.Frameworks (6.3) - NuGet.Packaging (6.3) - Newtonsoft.Json (>= 13.0.1) - NuGet.Configuration (>= 6.3) - NuGet.Versioning (>= 6.3) - System.Security.Cryptography.Cng (>= 5.0) - System.Security.Cryptography.Pkcs (>= 5.0) - NuGet.Protocol (6.3) - NuGet.Packaging (>= 6.3) - NuGet.Versioning (6.3) - Octokit (3.0) - System.Buffers (4.5.1) - restriction: || (&& (== net6.0) (>= net461)) (== netstandard2.0) - System.CodeDom (6.0) - System.Collections.Immutable (6.0) - System.Memory (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net461)) (== netstandard2.0) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Configuration.ConfigurationManager (6.0.1) - System.Security.Cryptography.ProtectedData (>= 6.0) - System.Security.Permissions (>= 6.0) - System.Drawing.Common (6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) - Microsoft.Win32.SystemEvents (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) - System.Formats.Asn1 (6.0) - System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= net461)) (== netstandard2.0) - System.Memory (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net461)) (== netstandard2.0) - System.Memory (4.5.5) - System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (< netstandard1.1)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) - System.Numerics.Vectors (>= 4.4) - restriction: || (&& (== net6.0) (< netcoreapp2.0)) (== netstandard2.0) - System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (< netcoreapp2.1)) (&& (== net6.0) (< netstandard1.1)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= uap10.1)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) - System.Numerics.Vectors (4.5) - restriction: || (&& (== net6.0) (>= net461)) (== netstandard2.0) - System.Reactive (5.0) - System.Runtime.InteropServices.WindowsRuntime (>= 4.3) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (== netstandard2.0) - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net472)) (&& (== net6.0) (< netcoreapp3.1)) (&& (== net6.0) (>= uap10.1)) (== netstandard2.0) - System.Reflection.Emit.ILGeneration (4.7) - restriction: || (&& (== net6.0) (< netcoreapp2.0) (< netstandard2.1)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (< portable-net45+wp8)) (&& (== net6.0) (>= uap10.1)) (== netstandard2.0) - System.Reflection.Emit.Lightweight (4.7) - System.Reflection.Emit.ILGeneration (>= 4.7) - restriction: || (&& (== net6.0) (< netcoreapp2.0) (< netstandard2.1)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (< portable-net45+wp8)) (&& (== net6.0) (>= uap10.1)) (== netstandard2.0) - System.Reflection.Metadata (6.0.1) - System.Collections.Immutable (>= 6.0) - System.Reflection.MetadataLoadContext (6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - System.Collections.Immutable (>= 6.0) - System.Reflection.Metadata (>= 6.0) - System.Resources.Extensions (6.0) - System.Memory (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net461)) (== netstandard2.0) - System.Runtime (4.3.1) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (== netstandard2.0) - Microsoft.NETCore.Platforms (>= 1.1.1) - Microsoft.NETCore.Targets (>= 1.1.3) - System.Runtime.CompilerServices.Unsafe (6.0) - System.Runtime.InteropServices.WindowsRuntime (4.3) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (== netstandard2.0) - System.Runtime (>= 4.3) - System.Security.AccessControl (6.0) - System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (== net6.0) (>= net461)) (== netstandard2.0) - System.Security.Cryptography.Cng (5.0) - System.Formats.Asn1 (>= 5.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.0)) - System.Security.Cryptography.Pkcs (6.0.1) - System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - System.Formats.Asn1 (>= 6.0) - System.Memory (>= 4.5.4) - restriction: || (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - System.Security.Cryptography.Cng (>= 5.0) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - System.Security.Cryptography.ProtectedData (6.0) - System.Security.Cryptography.Xml (6.0.1) - System.Memory (>= 4.5.4) - restriction: == netstandard2.0 - System.Security.AccessControl (>= 6.0) - System.Security.Cryptography.Pkcs (>= 6.0.1) - System.Security.Permissions (6.0) - System.Security.AccessControl (>= 6.0) - System.Windows.Extensions (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) - System.Security.Principal.Windows (5.0) - System.Text.Encoding.CodePages (6.0) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Text.Encodings.Web (6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Text.Json (6.0.6) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Text.Encodings.Web (>= 6.0) - System.Threading.Tasks.Dataflow (6.0) - System.Threading.Tasks.Extensions (4.5.4) - restriction: || (&& (== net6.0) (>= net472)) (&& (== net6.0) (< netcoreapp3.1)) (&& (== net6.0) (>= uap10.1)) (== netstandard2.0) - System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp2.1)) (&& (== net6.0) (< netstandard1.0)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= wp8)) (== netstandard2.0) - System.Windows.Extensions (6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) - System.Drawing.Common (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..37ee0b7 --- /dev/null +++ b/build.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +set -eu +set -o pipefail + +echo "Restoring dotnet tools..." +dotnet tool restore +dotnet paket restore + +FAKE_DETAILED_ERRORS=true dotnet run --project ./build/Build.fsproj -- "$@" \ No newline at end of file diff --git a/build/Build.fs b/build/Build.fs new file mode 100644 index 0000000..6cc2660 --- /dev/null +++ b/build/Build.fs @@ -0,0 +1,411 @@ +open Fake.Api +open Fake.Core +open Fake.DotNet +open Fake.IO +open Fake.IO.FileSystemOperators +open Fake.IO.Globbing.Operators +open Fake.Core.TargetOperators +open FSharpx.Option + +// Target names - avoid using strings +let targetCodeCheck = "CodeCheck" +let targetCheck = "Check" +let targetBuild = "Build" +let targetClean = "Clean" +let targetFullClean = "FullClean" +let targetRelease = "Release" +let targetScoop = "Scoop" +let targetLint = "Lint" +let targetPublish = "Publish" +let targetFormatCheck = "FormatCheck" +let targetFormat = "Format" +let targetTest = "Test" +let targetHelp = "Help" + +// Paths etc +let repoRoot = System.IO.Directory.GetParent(__SOURCE_DIRECTORY__).FullName +let outputDir = repoRoot @@ "output" +let buildDir = outputDir @@ "build" +let distDir = outputDir @@ "dist" +let srcDir = repoRoot @@ "src" +let mainSln = repoRoot @@ "RoonTagger.sln" +let cliProj = srcDir @@ "RoonTagger.Cli" @@ "RoonTagger.Cli.fsproj" + +[] +module Helpers = + open System.Text.RegularExpressions + + let log msg = Trace.log $"===> {msg}" + + let parseVersion = + function + | Some version -> version + | None -> failwith "No Version - either HEAD should be a tag or version override must be specified" + + // Normalizes versions to be valid dotnet version (e.g. v1.2.3 -> 1.2.3). + let normalizeVersion (version: string) = + let rgx = Regex "^[a-z,A-Z]+" + rgx.Replace(version, "") + +[] +module Outputs = + + type Archive = + | TarGz + | Zip + + type Target = + | NoArch + | WinX64 + | LinuxX64 + | OsxX64 + + type OutputFormat = OutputFormat of Target * Archive + + let toRID target = + match target with + | NoArch -> "noarch" + | WinX64 -> "win-x64" + | LinuxX64 -> "linux-x64" + | OsxX64 -> "osx-x64" + +[] +module GitHelpers = + open Fake.Tools.Git + + let extractVersionFromTag () = + let describe = Information.describe repoRoot + let lastTag = Information.getLastTag () + if (describe = lastTag) then Some lastTag else None + + let promptGithubToken () = + let tokenEnv = "GITHUB_TOKEN" + + let prompt () = + UserInput.getUserPassword "Github token: " + + Environment.environVarOrNone tokenEnv |> Option.defaultWith prompt + +[] +module Archives = + open SharpCompress.Archives + open SharpCompress.Common + open SharpCompress.Writers + open System.IO + + let compressZip dirName = + log $"Creating ZIP archive from '{dirName}'" + let source = buildDir @@ dirName + let zipFile = distDir @@ $"{dirName}.zip" + !! $"{source}/**/*" |> Zip.zip buildDir zipFile + + let compressTarGzip dirName = + log $"Creating TAR archive from '{dirName}'" + let tarFile = distDir @@ $"{dirName}.tar.gz" + // fsharplint:disable-next-line + let writerOptions = WriterOptions(CompressionType.GZip, LeaveStreamOpen = true) + use stream: Stream = File.OpenWrite tarFile + use writer = WriterFactory.Open(stream, ArchiveType.Tar, writerOptions) + writer.WriteAll(buildDir, $"{dirName}/*", SearchOption.AllDirectories) + +let outputCombinations = + [ OutputFormat(NoArch, Zip) + OutputFormat(NoArch, TarGz) + OutputFormat(WinX64, Zip) + OutputFormat(OsxX64, Zip) + OutputFormat(LinuxX64, TarGz) ] + +let buildConfig ctx = + let args = ctx.Context.Arguments + + lazy + if Seq.contains "--release" args then + Some DotNet.BuildConfiguration.Release + else if Seq.contains "--debug" args then + Some DotNet.BuildConfiguration.Debug + else + None + +let version ctx = + let versionOverride = + maybe { + let args = ctx.Context.Arguments + let! idx = Seq.tryFindIndex (fun s -> s = "--version") args + let! version = Seq.tryItem (idx + 1) args + + if System.String.IsNullOrEmpty version then + return! None + else + return version + } + + lazy Option.orElse versionOverride (extractVersionFromTag ()) + +let publishArch dir rid version ctx = + let buildConfig = + Option.defaultValue DotNet.BuildConfiguration.Release (buildConfig ctx).Value + + log $"Publishing RoonTagger to runtime {rid}" + + DotNet.publish + (fun p -> + { p with + Runtime = Some rid + Configuration = buildConfig + SelfContained = Some true + OutputPath = Some(buildDir @@ dir) + MSBuildParams = + { p.MSBuildParams with + DisableInternalBinLog = true // TODO: see https://github.com/fsprojects/FAKE/issues/2722 + Properties = + ("PublishSingleFile", "true") + :: ("PublishTrimmed", "true") + :: ("PublishReadyToRun", "true") + :: ("Version", version) + :: p.MSBuildParams.Properties } }) + cliProj + +let publishNoArch dir version ctx = + let buildConfig = + Option.defaultValue DotNet.BuildConfiguration.Release (buildConfig ctx).Value + + log "Publishing RoonTagger to NoArch" + + DotNet.publish + (fun p -> + { p with + Configuration = buildConfig + OutputPath = Some(buildDir @@ dir) + MSBuildParams = + { p.MSBuildParams with + DisableInternalBinLog = true // TODO: see https://github.com/fsprojects/FAKE/issues/2722 + Properties = + // Explicit because specified as true in the project file. + ("PublishTrimmed", "false") + :: ("Version", version) + :: p.MSBuildParams.Properties } }) + cliProj + +let runBuild ctx = + let buildConfig = + Option.defaultValue DotNet.BuildConfiguration.Release (buildConfig ctx).Value + + let version = parseVersion (version ctx).Value + let dotNetVersion = normalizeVersion version + Trace.traceHeader $"Building with '{buildConfig}' profile" + + DotNet.build + (fun p -> + { p with + Configuration = buildConfig + MSBuildParams = + { p.MSBuildParams with + DisableInternalBinLog = true // TODO: see https://github.com/fsprojects/FAKE/issues/2722 + Properties = ("Version", dotNetVersion) :: p.MSBuildParams.Properties } }) + mainSln + +let runClean _ = + Trace.traceHeader "Running dotnet clean" + let result = DotNet.exec id "clean" mainSln + + if not result.OK then + failwith $"Error running 'Clean' - check above for errors" + +let runFullClean _ = + Trace.traceHeader "Performing Full Clean" + + !! "src/*/obj" ++ "src/*/bin" ++ "output" |> File.deleteAll + +let runLint _ = + Trace.traceHeader "Linting the project" + + let result = + [ "lint"; mainSln ] + |> String.concat " " + |> DotNet.exec id "fsharplint" + + if not result.OK then + failwith "Linting errors found. See output above" + +let runFormat check = + Trace.traceHeader "Check project formatting" + let defaultArgs = if check then [ "--check" ] else [] + + let result = + !! "**/*.fs" + -- "packages/**/*.fs" + -- "**/obj/**/*.fs" + -- "**/bin/**/*.fs" + |> Seq.toList + |> List.append defaultArgs + |> String.concat " " + |> DotNet.exec id "fantomas" + + if not result.OK then + failwith "Formatting errors found. See output above" + +let runTest ctx = + let buildConfig = + Option.defaultValue DotNet.BuildConfiguration.Debug (buildConfig ctx).Value + + Trace.traceHeader $"Testing with '{buildConfig}' profile" + + DotNet.test + (fun s -> + { s with + Configuration = buildConfig + // TODO: see https://github.com/fsprojects/FAKE/issues/2722 + MSBuildParams = + { s.MSBuildParams with + DisableInternalBinLog = true } }) + mainSln + +let runScoop ctx = + let version = parseVersion (version ctx).Value + let scoopFile = distDir @@ "roon-tagger.json" + + let final = + $"""{{ + "version": "{version}", + "description": "A utility to set Roon specific tags in flac files.", + "homepage": "https://babysnakes.github.io/roon-tagger/", + "architecture": {{ + "64bit": {{ + "url": "https://github.com/babysnakes/roon-tagger/releases/download/{version}/roon-tagger_{version}_win-x64.tar.gz" + }} + }}, + "bin": "roon-tagger.exe" +}} +""" + + File.writeString false scoopFile final + +let runPublish ctx = + let version = parseVersion (version ctx).Value + let dotNetVersion = normalizeVersion version + Shell.cleanDir outputDir + Shell.mkdir buildDir + Shell.mkdir distDir + + for OutputFormat(target, archive) in outputCombinations do + let rid = toRID target + let dir = $"roon-tagger_{version}_{rid}" + + match target with + | NoArch -> publishNoArch dir dotNetVersion ctx + | WinX64 + | LinuxX64 + | OsxX64 -> publishArch dir rid dotNetVersion ctx + + match archive with + | Zip -> compressZip dir + | TarGz -> compressTarGzip dir + +let runRelease ctx = + Trace.traceHeader "Creating draft release" + let version = version ctx + + if version.Value.IsNone then + // fsharplint:disable-next-line FailwithBadUsage + failwith "No Version - either HEAD should be a tag or version override must be specified" + + let version = Option.get version.Value + + let files = + !! "output/dist/*.zip" + ++ "output/dist/*.tar.gz" + ++ "output/dist/*.json" + + let contents = + repoRoot @@ "Resources" @@ "ReleaseTemplate.md" + |> System.IO.File.ReadLines + + promptGithubToken () + |> GitHub.createClientWithToken + |> GitHub.draftNewRelease "babysnakes" "roon-tagger" version false contents + |> GitHub.uploadFiles files + |> Async.RunSynchronously + |> ignore + +let runHelp _ = + let msg = + """ +Fake build for RoonTagger. + +Usage ($BUILD = ./build.sh or .\build.cmd - depending on your OS): + Show this help: + $BUILD + Run task: + $BUILD -t [ options ] + Get all available targets: + $BUILD --list + +tasks: + * Help - show help (default task if no task is specified) + * Format - Perform in-place formatting on all F# files in project + * Test - run project tests + * CodeCheck - check linting and formatting + * Check - run all project checks + * Build - Build the project (by default in Release mode) + * Publish - Create archives of roon-tagger for all supported platforms + * Release - Create github draft release (with the published files) + +options: + --version VERSION Override git tag as version. + --release Force 'Release' mode on tests. + --debug Force 'Debug' mode on Build / Publish / Release. +""" + + Trace.traceHeader "Building Project Help" + Trace.log msg + + +let initTargets () = + + /// Defines a dependency - y is dependent on x. Finishes the chain. + let (==>!) x y = x ==> y |> ignore + + /// Defines a soft dependency. x must run before y, if it is present, but y does not require x to be run. Finishes the chain. + let (?=>!) x y = x ?=> y |> ignore + + Target.create targetCodeCheck ignore + Target.create targetCheck ignore + Target.create targetBuild runBuild + Target.create targetClean runClean + Target.create targetFullClean runFullClean + Target.create targetLint runLint + Target.create targetFormatCheck <| fun _ -> runFormat true + Target.create targetFormat <| fun _ -> runFormat false + Target.create targetTest runTest + Target.create targetScoop runScoop + Target.create targetPublish runPublish + Target.create targetRelease runRelease + Target.create targetHelp runHelp + + // Tasks dependencies + targetClean ?=>! targetBuild + targetClean ?=> targetPublish ==>! targetRelease + targetClean ==>! targetRelease + targetScoop ==>! targetRelease + targetFormatCheck ?=> targetLint ==>! targetCodeCheck + targetFormatCheck ==>! targetCodeCheck + targetTest ==>! targetCheck + targetCodeCheck ==>! targetCheck + targetClean ==>! targetCheck + +[] +let main argv = + argv + |> Array.toList + |> Context.FakeExecutionContext.Create false "build.fsx" + |> Context.RuntimeContext.Fake + |> Context.setExecutionContext + + initTargets () + + try + Target.runOrDefaultWithArguments targetHelp + 0 // return an integer exit code + with ex -> + Trace.traceError ex.Message + 1 diff --git a/build/Build.fsproj b/build/Build.fsproj new file mode 100644 index 0000000..e6e891a --- /dev/null +++ b/build/Build.fsproj @@ -0,0 +1,11 @@ + + + + Exe + net6.0 + + + + + + \ No newline at end of file diff --git a/build/paket.references b/build/paket.references new file mode 100644 index 0000000..9ceef8e --- /dev/null +++ b/build/paket.references @@ -0,0 +1,11 @@ +group Build +Fake.Api.GitHub +Fake.Core.UserInput +Fake.DotNet.Cli +Fake.IO.FileSystem +Fake.IO.Zip +Fake.Core.Process +Fake.Core.Target +Fake.Tools.Git +FSharpx.Extras +SharpCompress \ No newline at end of file diff --git a/docs/commands/set-tags.md b/docs/commands/set-tags.md index b94d1f4..8fa6d67 100644 --- a/docs/commands/set-tags.md +++ b/docs/commands/set-tags.md @@ -1,7 +1,7 @@ ## Set Roon Specific Tags - _set-tags_ -Sets roon specific tags. Unless specifically indicated (run with `-h`), all provided tags * -overwrite* existing tags. +ets roon specific tags. Unless specifically indicated (run with `-h`), all provided tags *overwrite* +existing tags. One spacial case is **composer** (`--composer`). While it's not *Roon* specific in any way, it both sets the *composer* tag **and** adds *composer* credits. diff --git a/paket.dependencies b/paket.dependencies index 91cea06..54e544a 100644 --- a/paket.dependencies +++ b/paket.dependencies @@ -4,7 +4,7 @@ nuget FSharp.Core nuget Argu ~> 6.1 nuget FlacLibSharp ~> 3.2.1 nuget FParsec ~> 1.1.1 -nuget FSharp.Data.LiteralProviders 0.3.5 +nuget FSharp.Data.LiteralProviders ~> 1.0.0 nuget FSharp.Json ~> 0.4.0 nuget FsToolkit.ErrorHandling ~> 2.1 nuget FsUnit ~> 4.0 @@ -15,4 +15,19 @@ nuget Pluralize.NET ~> 1.0 nuget Roman-Numerals ~> 1.0 nuget Serilog ~> 2.10 nuget Serilog.Sinks.File ~> 4.1 -nuget Spectre.Console ~> 0.39 \ No newline at end of file +nuget Spectre.Console ~> 0.39 + +// FAKE build dependencies +group Build + source https://www.nuget.org/api/v2 + + nuget Fake.Api.GitHub ~> 6.0.0 + nuget Fake.Core.UserInput ~> 6.0.0 + nuget Fake.DotNet.Cli ~> 6.0.0 + nuget Fake.IO.FileSystem ~> 6.0.0 + nuget Fake.IO.Zip ~> 6.0.0 + nuget Fake.Core.Process ~> 6.0.0 + nuget Fake.Core.Target ~> 6.0.0 + nuget Fake.Tools.Git ~> 6.0.0 + nuget FSharpx.Extras 3.1.0 + nuget SharpCompress \ No newline at end of file diff --git a/paket.lock b/paket.lock index db139e7..11f25f7 100644 --- a/paket.lock +++ b/paket.lock @@ -8,8 +8,8 @@ NUGET FParsec (1.1.1) FSharp.Core (>= 4.3.4) - restriction: || (>= net45) (>= netstandard2.0) System.ValueTuple (>= 4.4) - restriction: >= net45 - FSharp.Core (6.0.3) - FSharp.Data.LiteralProviders (0.3.5) + FSharp.Core (7.0.300) + FSharp.Data.LiteralProviders (1.0.3) FSharp.Core (>= 4.5) FSharp.Json (0.4.1) FSharp.Core (>= 4.6.2) - restriction: >= netstandard2.0 @@ -19,63 +19,31 @@ NUGET FSharp.Core (>= 5.0.2) - restriction: >= netstandard2.0 NETStandard.Library (>= 2.0.3) - restriction: >= netstandard2.0 NUnit (>= 3.13.2 < 3.14) - restriction: >= netstandard2.0 - Microsoft.CodeCoverage (17.1) - restriction: || (>= net45) (>= netcoreapp1.0) - Microsoft.CSharp (4.7) - restriction: || (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard2.0) (>= uap10.0)) - Microsoft.NET.Test.Sdk (17.1) - Microsoft.CodeCoverage (>= 17.1) - restriction: || (>= net45) (>= netcoreapp1.0) - Microsoft.TestPlatform.TestHost (>= 17.1) - restriction: >= netcoreapp1.0 - Newtonsoft.Json (>= 9.0.1) - restriction: >= uap10.0 - System.ComponentModel.Primitives (>= 4.1) - restriction: >= uap10.0 - System.ComponentModel.TypeConverter (>= 4.1) - restriction: >= uap10.0 - System.Runtime.InteropServices.RuntimeInformation (>= 4.0) - restriction: >= uap10.0 - Microsoft.NETCore.Platforms (5.0.2) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.1) (< netstandard1.3)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (>= net45) (< netstandard1.3) (>= netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net461) (>= netcoreapp2.1)) (&& (>= net461) (>= netstandard2.0)) (>= netcoreapp2.0) (&& (>= netcoreapp2.1) (>= uap10.1)) (&& (>= netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard1.0) (>= netstandard2.0) (< portable-net45+win8)) (&& (< netstandard1.0) (>= netstandard2.0) (>= win8)) (&& (< netstandard1.0) (>= netstandard2.0) (< win8)) (&& (< netstandard1.3) (>= netstandard2.0) (< win8) (>= wpa81)) (&& (< netstandard1.5) (>= netstandard2.0) (>= uap10.0)) (&& (>= netstandard2.0) (< portable-net45+win8+wpa81)) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= wp8)) - Microsoft.NETCore.Targets (5.0) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) - Microsoft.TestPlatform.ObjectModel (17.1) - restriction: >= netcoreapp1.0 - NuGet.Frameworks (>= 4.6.4) - restriction: && (>= netcoreapp1.0) (< netstandard2.0) - NuGet.Frameworks (>= 5.11) - restriction: || (&& (>= net45) (< netstandard1.3)) (&& (< net45) (< netcoreapp1.0) (>= netstandard2.0) (< uap10.0)) (>= net451) (>= netcoreapp2.1) - System.Reflection.Metadata (>= 1.6) - restriction: || (&& (>= net45) (< netstandard1.3)) (&& (< net45) (< netcoreapp1.0) (>= netstandard1.3) (< netstandard2.0) (< uap10.0)) (&& (< net45) (< netcoreapp1.0) (>= netstandard2.0) (< uap10.0)) (>= net451) (&& (>= netcoreapp1.0) (< netstandard2.0)) (>= netcoreapp2.1) - Microsoft.TestPlatform.TestHost (17.1) - restriction: >= netcoreapp1.0 - Microsoft.TestPlatform.ObjectModel (>= 17.1) - restriction: || (>= netcoreapp1.0) (>= uap10.0) - Newtonsoft.Json (>= 9.0.1) - restriction: || (>= netcoreapp1.0) (>= uap10.0) - System.Diagnostics.Process (>= 4.1) - restriction: && (>= netcoreapp1.0) (< netcoreapp2.1) - System.Diagnostics.StackTrace (>= 4.3) - restriction: && (>= netcoreapp1.0) (< netcoreapp2.1) - System.Diagnostics.TextWriterTraceListener (>= 4.0) - restriction: && (>= netcoreapp1.0) (< netcoreapp2.1) - System.Diagnostics.TraceSource (>= 4.3) - restriction: && (>= netcoreapp1.0) (< netcoreapp2.1) - System.Runtime.InteropServices.RuntimeInformation (>= 4.0) - restriction: && (>= netcoreapp1.0) (< netcoreapp2.1) - System.Runtime.Loader (>= 4.0) - restriction: && (>= netcoreapp1.0) (< netcoreapp2.1) - System.Threading.Thread (>= 4.0) - restriction: && (>= netcoreapp1.0) (< netcoreapp2.1) - Microsoft.Win32.Primitives (4.3) - restriction: && (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.Win32.Registry (5.0) - restriction: && (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - NETStandard.Library (>= 1.6.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1) (< xamarintvos) (< xamarinwatchos) - System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= uap10.1) - System.Security.AccessControl (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - Microsoft.Win32.SystemEvents (5.0) - restriction: && (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 - NETStandard.Library (2.0.3) - restriction: || (&& (< monoandroid) (>= netcoreapp1.0) (< xamarintvos) (< xamarinwatchos)) (&& (< net20) (>= netstandard1.3)) (&& (< net40) (>= netstandard1.0)) (&& (< net40) (>= netstandard1.1)) (&& (< net45) (>= netstandard1.0) (< netstandard1.3)) (&& (< net45) (>= netstandard1.3)) (>= netstandard2.0) (>= uap10.0) + Microsoft.CodeCoverage (17.6.3) - restriction: || (>= net462) (>= netcoreapp3.1) + Microsoft.NET.Test.Sdk (17.6.3) + Microsoft.CodeCoverage (>= 17.6.3) - restriction: || (>= net462) (>= netcoreapp3.1) + Microsoft.TestPlatform.TestHost (>= 17.6.3) - restriction: >= netcoreapp3.1 + Microsoft.NETCore.Platforms (7.0) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (>= net45) (< netstandard1.3) (>= netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net461) (>= netcoreapp2.1)) (&& (>= net461) (>= netstandard2.0)) (&& (>= net462) (>= netcoreapp2.1)) (>= netcoreapp2.0) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (< netstandard1.0) (>= netstandard2.0) (< portable-net45+win8)) (&& (< netstandard1.0) (>= netstandard2.0) (>= win8)) (&& (< netstandard1.0) (>= netstandard2.0) (< win8)) (&& (< netstandard1.3) (>= netstandard2.0) (< win8) (>= wpa81)) (&& (< netstandard1.5) (>= netstandard2.0) (>= uap10.0)) (&& (>= netstandard2.0) (< portable-net45+win8+wpa81)) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= wp8)) + Microsoft.NETCore.Targets (5.0) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) + Microsoft.TestPlatform.ObjectModel (17.6.3) - restriction: >= netcoreapp3.1 + NuGet.Frameworks (>= 6.5) - restriction: || (>= net462) (>= netstandard2.0) + System.Reflection.Metadata (>= 1.6) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.TestPlatform.TestHost (17.6.3) - restriction: >= netcoreapp3.1 + Microsoft.TestPlatform.ObjectModel (>= 17.6.3) - restriction: >= netcoreapp3.1 + Newtonsoft.Json (>= 13.0.1) - restriction: >= netcoreapp3.1 + Microsoft.Win32.SystemEvents (7.0) - restriction: >= net6.0 + NETStandard.Library (2.0.3) - restriction: || (&& (< net20) (>= netstandard1.3)) (&& (< net40) (>= netstandard1.0)) (&& (< net40) (>= netstandard1.1)) (&& (< net45) (>= netstandard1.0) (< netstandard1.3)) (&& (< net45) (>= netstandard1.3)) (>= netstandard2.0) Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (>= net45) (< netstandard1.3)) (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0)) (&& (>= net46) (< netstandard1.4)) (>= net461) (>= netcoreapp2.0) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= portable-net45+win8) (< win8)) (&& (< netstandard1.0) (< portable-net45+win8) (>= portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard1.3) (< win8) (>= wpa81)) (&& (< netstandard1.5) (>= uap10.0)) (>= uap10.1) (>= wp8) - Newtonsoft.Json (13.0.1) - restriction: || (>= netcoreapp1.0) (>= uap10.0) - Microsoft.CSharp (>= 4.3) - restriction: || (&& (< net20) (>= netstandard1.0) (< netstandard1.3)) (&& (< net20) (>= netstandard1.3) (< netstandard2.0)) - NETStandard.Library (>= 1.6.1) - restriction: || (&& (< net20) (>= netstandard1.0) (< netstandard1.3)) (&& (< net20) (>= netstandard1.3) (< netstandard2.0)) - System.ComponentModel.TypeConverter (>= 4.3) - restriction: || (&& (< net20) (>= netstandard1.0) (< netstandard1.3)) (&& (< net20) (>= netstandard1.3) (< netstandard2.0)) - System.Runtime.Serialization.Formatters (>= 4.3) - restriction: && (< net20) (>= netstandard1.3) (< netstandard2.0) - System.Runtime.Serialization.Primitives (>= 4.3) - restriction: || (&& (< net20) (>= netstandard1.0) (< netstandard1.3)) (&& (< net20) (>= netstandard1.3) (< netstandard2.0)) - System.Xml.XmlDocument (>= 4.3) - restriction: && (< net20) (>= netstandard1.3) (< netstandard2.0) - NuGet.Frameworks (5.11) - restriction: || (&& (>= net45) (>= netcoreapp1.0) (< netstandard1.3)) (&& (>= net451) (>= netcoreapp1.0)) (&& (>= netcoreapp1.0) (< netstandard2.0)) (>= netcoreapp2.1) - NUnit (3.13.2) + Newtonsoft.Json (13.0.2) - restriction: >= netcoreapp3.1 + NuGet.Frameworks (6.6.1) - restriction: >= netcoreapp3.1 + NUnit (3.13.3) NETStandard.Library (>= 2.0) - restriction: && (< net35) (>= netstandard2.0) NUnit3TestAdapter (4.2.1) Pluralize.NET (1.0.2) NETStandard.Library (>= 1.6.1) - restriction: && (< net40) (>= netstandard1.1) (< netstandard2.0) Roman-Numerals (1.0.3) NETStandard.Library (>= 1.6.1) - restriction: && (< net40) (>= netstandard1.0) - runtime.native.System (4.3.1) - restriction: && (< monoandroid) (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Platforms (>= 1.1.1) - Microsoft.NETCore.Targets (>= 1.1.3) - Serilog (2.10) + Serilog (2.12) NETStandard.Library (>= 1.6.1) - restriction: || (&& (< net45) (>= netstandard1.0) (< netstandard1.3)) (&& (< net45) (>= netstandard1.3) (< netstandard2.0)) System.Collections.NonGeneric (>= 4.3) - restriction: && (< net45) (>= netstandard1.3) (< netstandard2.0) Serilog.Sinks.File (4.1) @@ -87,16 +55,12 @@ NUGET System.Text.Encoding.Extensions (>= 4.0.11) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) System.Threading (>= 4.0.11) - restriction: && (< net45) (>= netstandard1.3) (< netstandard2.0) System.Threading.Timer (>= 4.0.1) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) - Spectre.Console (0.43) - System.Memory (>= 4.5) - restriction: && (< net5.0) (>= netstandard2.0) - System.Buffers (4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.1) (>= netstandard2.0)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) (&& (< net5.0) (>= netstandard2.0) (>= xamarintvos)) (&& (< net5.0) (>= netstandard2.0) (>= xamarinwatchos)) (&& (< net5.0) (>= xamarinios)) (&& (< net5.0) (>= xamarinmac)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) - System.Collections (4.3) - restriction: || (&& (< monoandroid) (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard2.0) (>= uap10.0)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.Collections.Immutable (5.0) - restriction: || (&& (>= net45) (>= netcoreapp1.0) (< netstandard1.3)) (&& (>= net451) (>= netcoreapp1.0) (>= netstandard2.0)) (&& (>= net461) (>= netcoreapp1.0)) (&& (>= net461) (>= netcoreapp2.1)) (&& (< net5.0) (>= netcoreapp2.1)) (&& (>= netcoreapp1.0) (< netstandard1.1)) (&& (>= netcoreapp1.0) (< netstandard2.0)) (&& (>= netcoreapp2.1) (< netstandard1.1)) (&& (>= netcoreapp2.1) (< netstandard2.0)) - NETStandard.Library (>= 1.6.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (>= net46) (< net461) (< netstandard2.0)) - System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard2.0)) (>= net461) (>= uap10.1) + Spectre.Console (0.47) + System.Memory (>= 4.5.5) - restriction: >= netstandard2.0 + System.Buffers (4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.1) (>= netstandard2.0)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + System.Collections.Immutable (7.0) - restriction: >= netcoreapp3.1 + System.Memory (>= 4.5.5) - restriction: || (>= net462) (&& (< net6.0) (>= netstandard2.0)) + System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: || (>= net462) (&& (>= net6.0) (< net7.0)) (&& (< net6.0) (>= netstandard2.0)) System.Collections.NonGeneric (4.3) - restriction: && (< net45) (>= netstandard1.3) (< netstandard2.0) System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -104,73 +68,28 @@ NUGET System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.ComponentModel.Primitives (4.3) - restriction: >= uap10.0 - System.ComponentModel.TypeConverter (4.3) - restriction: >= uap10.0 - System.ComponentModel.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.5) (< win8)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net45) (< netstandard1.5)) (>= net462) (&& (< netstandard1.0) (>= win8)) (>= wp8) (>= wpa81) - System.Configuration.ConfigurationManager (5.0) - restriction: >= netstandard2.0 - System.Security.Cryptography.ProtectedData (>= 5.0) - restriction: && (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Permissions (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (>= netstandard2.0) (>= xamarintvos) (>= xamarinwatchos) - System.Diagnostics.Debug (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard2.0) (>= uap10.0)) + System.Configuration.ConfigurationManager (7.0) - restriction: >= netstandard2.0 + System.Diagnostics.EventLog (>= 7.0) - restriction: >= net7.0 + System.Security.Cryptography.ProtectedData (>= 7.0) - restriction: || (&& (< net462) (>= netstandard2.0)) (>= net6.0) + System.Security.Permissions (>= 7.0) - restriction: || (>= net462) (>= netstandard2.0) + System.Diagnostics.Debug (4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.Diagnostics.Process (4.3) - restriction: && (>= netcoreapp1.0) (< netcoreapp2.1) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.Win32.Primitives (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.Win32.Registry (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.IO.FileSystem (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Text.Encoding.Extensions (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Tasks (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Thread (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.ThreadPool (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.StackTrace (4.3) - restriction: && (>= netcoreapp1.0) (< netcoreapp2.1) - System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Metadata (>= 1.4.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.TextWriterTraceListener (4.3) - restriction: && (>= netcoreapp1.0) (< netcoreapp2.1) - System.Diagnostics.TraceSource (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.TraceSource (4.3) - restriction: && (>= netcoreapp1.0) (< netcoreapp2.1) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Drawing.Common (5.0.2) - restriction: >= netcoreapp3.0 - Microsoft.Win32.SystemEvents (>= 5.0) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Globalization (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard2.0) (>= uap10.0)) + System.Diagnostics.EventLog (7.0) - restriction: >= net7.0 + System.Drawing.Common (7.0) - restriction: >= net6.0 + Microsoft.Win32.SystemEvents (>= 7.0) - restriction: >= net6.0 + System.Globalization (4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.IO (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.5) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp1.0) (< netstandard1.4)) (&& (< monoandroid) (>= netcoreapp1.1) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp1.1) (< netstandard1.5)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard1.3) (< netstandard2.0)) (&& (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard2.0) (>= uap10.0)) + System.IO (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.5) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp1.1) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp1.1) (< netstandard1.5)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard1.3) (< netstandard2.0)) (&& (>= netcoreapp1.1) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.IO.FileSystem (4.3) - restriction: || (&& (< monoandroid) (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard1.3) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) + System.IO.FileSystem (4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -179,111 +98,333 @@ NUGET System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (>= netstandard2.0)) (&& (< net45) (>= net46) (< netstandard2.0)) (&& (< net45) (>= netstandard1.3) (< netstandard2.0)) (&& (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.IO.FileSystem.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (>= netstandard2.0)) (&& (< net45) (>= net46) (< netstandard2.0)) (&& (< net45) (>= netstandard1.3) (< netstandard2.0)) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Memory (4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp1.0) (< netstandard1.1)) (&& (< monoandroid) (>= netcoreapp1.0) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net45) (>= netcoreapp1.0) (< netstandard1.3)) (&& (>= net451) (>= netcoreapp1.0) (>= netstandard2.0)) (&& (>= net46) (>= netcoreapp1.0) (< netstandard1.1)) (&& (>= net46) (>= netcoreapp1.0) (< netstandard1.3)) (&& (>= net46) (>= netcoreapp1.0) (< netstandard2.0)) (&& (>= net46) (>= netcoreapp2.1) (< netstandard2.0)) (&& (< net46) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net461) (>= netcoreapp1.0)) (&& (>= net461) (>= netcoreapp2.1)) (&& (< net5.0) (>= netstandard2.0)) (&& (>= netcoreapp1.0) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.0) (< netstandard1.1) (>= netstandard2.0)) (&& (>= netcoreapp1.0) (>= uap10.1)) (&& (>= netcoreapp2.1) (< netstandard1.1)) (&& (>= netcoreapp2.1) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp2.1) (>= uap10.1)) + System.Memory (4.5.5) - restriction: || (&& (>= net462) (>= netcoreapp3.1)) (&& (< net6.0) (>= netcoreapp3.1)) (>= netstandard2.0) System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.1)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (< uap10.1) (>= wpa81)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) System.Numerics.Vectors (>= 4.4) - restriction: && (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Numerics.Vectors (>= 4.5) - restriction: >= net461 System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (>= monoandroid) (< netstandard1.1)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) System.Numerics.Vectors (4.5) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net461) (>= netstandard2.0)) - System.Reflection (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard2.0) (>= uap10.0)) + System.Reflection (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Reflection.Metadata (5.0) - restriction: || (&& (< monoandroid) (>= netcoreapp1.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net45) (>= netcoreapp1.0) (< netstandard1.3)) (&& (>= net451) (>= netcoreapp1.0)) (&& (>= netcoreapp1.0) (< netstandard2.0)) (>= netcoreapp2.1) - NETStandard.Library (>= 1.6.1) - restriction: && (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) - System.Collections.Immutable (>= 5.0) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< net5.0) (>= netstandard2.0)) (&& (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (>= net461) (&& (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) + System.Reflection.Metadata (7.0) - restriction: >= netcoreapp3.1 + System.Collections.Immutable (>= 7.0) - restriction: || (>= net462) (>= netstandard2.0) + System.Memory (>= 4.5.5) - restriction: || (>= net462) (&& (< net6.0) (>= netstandard2.0)) System.Reflection.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard2.0) (>= uap10.0)) + System.Resources.ResourceManager (4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard1.4) (>= uap10.0)) (&& (< netstandard2.0) (>= uap10.0)) + System.Runtime (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.CompilerServices.Unsafe (5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.1) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) (&& (< net5.0) (>= netstandard2.0) (>= xamarintvos)) (&& (< net5.0) (>= netstandard2.0) (>= xamarinwatchos)) (&& (< net5.0) (>= xamarinios)) (&& (< net5.0) (>= xamarinmac)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard2.0) (>= uap10.1)) - System.Runtime.Extensions (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard2.0) (>= uap10.0)) + System.Runtime.CompilerServices.Unsafe (6.0) - restriction: || (&& (>= monoandroid) (< netstandard1.1) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) (&& (>= net462) (>= netcoreapp3.1)) (&& (>= net6.0) (< net7.0)) (&& (< net6.0) (>= netcoreapp3.1)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + System.Runtime.Extensions (4.3.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Runtime (>= 4.3.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.Handles (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp1.0) (< netstandard1.4)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Handles (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard2.0)) (&& (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.InteropServices (4.3) - restriction: && (< net45) (>= netstandard1.3) (< netstandard2.0) Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net462) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.InteropServices.RuntimeInformation (4.3) - restriction: || (&& (>= netcoreapp1.0) (< netcoreapp2.1)) (>= uap10.0) - System.Runtime.Loader (4.3) - restriction: && (>= netcoreapp1.0) (< netcoreapp2.1) - System.IO (>= 4.3) - restriction: && (< monotouch) (< net462) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: && (< monotouch) (< net462) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monotouch) (< net462) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Serialization.Formatters (4.3) - restriction: && (< netstandard2.0) (>= uap10.0) - System.Collections (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.Serialization.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (>= netstandard1.3) (< netstandard1.4)) (&& (< monotouch) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) - System.Runtime.Serialization.Primitives (4.3) - restriction: || (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard2.0) (>= uap10.0)) - System.Security.AccessControl (5.0) - restriction: || (&& (>= monoandroid) (>= netcoreapp1.0) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= monotouch) (>= netcoreapp1.0)) (&& (>= net461) (>= netcoreapp1.0)) (&& (>= netcoreapp1.0) (>= uap10.1)) (>= netstandard2.0) - Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 - System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= net46) (< netstandard2.0)) (&& (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1)) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) - System.Security.Cryptography.ProtectedData (5.0) - restriction: && (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Memory (>= 4.5.4) - restriction: && (< net46) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Permissions (5.0) - restriction: >= netstandard2.0 - System.Security.AccessControl (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) - System.Windows.Extensions (>= 5.0) - restriction: >= netcoreapp3.0 - System.Security.Principal.Windows (5.0) - restriction: || (&& (>= monoandroid) (>= netcoreapp1.0) (< netstandard1.3)) (&& (>= monotouch) (>= netcoreapp1.0)) (&& (< net46) (>= netstandard2.0)) (&& (>= net461) (>= netcoreapp1.0)) (&& (>= net461) (>= netstandard2.0)) (&& (>= netcoreapp1.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.0) (>= uap10.1)) (>= netcoreapp2.0) + System.Security.AccessControl (6.0) - restriction: || (&& (>= net462) (>= netstandard2.0)) (&& (< net6.0) (>= netstandard2.0)) + System.Security.Principal.Windows (>= 5.0) - restriction: || (>= net461) (&& (< net6.0) (>= netstandard2.0)) + System.Security.Cryptography.ProtectedData (7.0) - restriction: || (&& (< net462) (>= netstandard2.0)) (>= net6.0) + System.Security.Permissions (7.0) - restriction: >= netstandard2.0 + System.Security.AccessControl (>= 6.0) - restriction: || (>= net462) (&& (< net6.0) (>= netstandard2.0)) + System.Windows.Extensions (>= 7.0) - restriction: >= net6.0 + System.Security.Principal.Windows (5.0) - restriction: || (&& (>= net461) (>= netstandard2.0)) (&& (>= net462) (>= netstandard2.0)) (&& (< net6.0) (>= netstandard2.0)) Microsoft.NETCore.Platforms (>= 5.0) - restriction: || (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) - System.Text.Encoding (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp1.0) (< netstandard1.4)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard2.0) (>= uap10.0)) + System.Text.Encoding (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.Text.Encoding.Extensions (4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (&& (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Text.Encoding.Extensions (4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.Threading (4.3) - restriction: || (&& (< monoandroid) (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard1.3) (< netstandard2.0)) (&& (< netstandard2.0) (>= uap10.0)) + System.Threading (4.3) - restriction: && (< net45) (>= netstandard1.3) (< netstandard2.0) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.Threading.Tasks (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Threading.Tasks (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.Threading.Thread (4.3) - restriction: && (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.ThreadPool (4.3) - restriction: && (>= netcoreapp1.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading.Timer (4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.ValueTuple (4.5) - restriction: >= net45 - System.Windows.Extensions (5.0) - restriction: >= netcoreapp3.0 - System.Drawing.Common (>= 5.0) - restriction: >= netcoreapp3.0 - System.Xml.ReaderWriter (4.3.1) - restriction: && (< netstandard2.0) (>= uap10.0) - System.Xml.XmlDocument (4.3) - restriction: && (< netstandard2.0) (>= uap10.0) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Xml.ReaderWriter (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Windows.Extensions (7.0) - restriction: >= net6.0 + System.Drawing.Common (>= 7.0) - restriction: >= net6.0 + +GROUP Build +NUGET + remote: https://www.nuget.org/api/v2 + BlackFox.VsWhere (1.1) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.0.0.1) - restriction: >= net45 + FSharp.Core (>= 4.2.3) - restriction: && (< net45) (>= netstandard2.0) + Microsoft.Win32.Registry (>= 4.7) - restriction: && (< net45) (>= netstandard2.0) + Fake.Api.GitHub (6.0) + FSharp.Core (>= 6.0.3) - restriction: >= netstandard2.0 + Octokit (>= 0.50) - restriction: >= netstandard2.0 + Fake.Core.CommandLineParsing (6.0) - restriction: >= netstandard2.0 + FParsec (>= 1.1.1) - restriction: >= netstandard2.0 + FSharp.Core (>= 6.0.3) - restriction: >= netstandard2.0 + Fake.Core.Context (6.0) - restriction: >= netstandard2.0 + FSharp.Core (>= 6.0.3) - restriction: >= netstandard2.0 + Fake.Core.Environment (6.0) - restriction: >= netstandard2.0 + FSharp.Core (>= 6.0.3) - restriction: >= netstandard2.0 + Fake.Core.FakeVar (6.0) - restriction: >= netstandard2.0 + Fake.Core.Context (>= 6.0) - restriction: >= netstandard2.0 + FSharp.Core (>= 6.0.3) - restriction: >= netstandard2.0 + Fake.Core.Process (6.0) + Fake.Core.Environment (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.FakeVar (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.String (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.0) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 6.0) - restriction: >= netstandard2.0 + FSharp.Core (>= 6.0.3) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.SemVer (6.0) - restriction: >= netstandard2.0 + FSharp.Core (>= 6.0.3) - restriction: >= netstandard2.0 + Fake.Core.String (6.0) - restriction: >= netstandard2.0 + FSharp.Core (>= 6.0.3) - restriction: >= netstandard2.0 + Fake.Core.Target (6.0) + Fake.Core.CommandLineParsing (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.Context (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.Environment (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.FakeVar (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.Process (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.String (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.0) - restriction: >= netstandard2.0 + FSharp.Control.Reactive (>= 5.0.2) - restriction: >= netstandard2.0 + FSharp.Core (>= 6.0.3) - restriction: >= netstandard2.0 + Fake.Core.Tasks (6.0) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.0) - restriction: >= netstandard2.0 + FSharp.Core (>= 6.0.3) - restriction: >= netstandard2.0 + Fake.Core.Trace (6.0) - restriction: >= netstandard2.0 + Fake.Core.Environment (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.FakeVar (>= 6.0) - restriction: >= netstandard2.0 + FSharp.Core (>= 6.0.3) - restriction: >= netstandard2.0 + Fake.Core.UserInput (6.0) + FSharp.Core (>= 6.0.3) - restriction: >= netstandard2.0 + Fake.Core.Xml (6.0) - restriction: >= netstandard2.0 + Fake.Core.String (>= 6.0) - restriction: >= netstandard2.0 + FSharp.Core (>= 6.0.3) - restriction: >= netstandard2.0 + Fake.DotNet.Cli (6.0) + Fake.Core.Environment (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.Process (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.String (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.0) - restriction: >= netstandard2.0 + Fake.DotNet.MSBuild (>= 6.0) - restriction: >= netstandard2.0 + Fake.DotNet.NuGet (>= 6.0) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 6.0) - restriction: >= netstandard2.0 + FSharp.Core (>= 6.0.3) - restriction: >= netstandard2.0 + Mono.Posix.NETStandard (>= 1.0) - restriction: >= netstandard2.0 + Newtonsoft.Json (>= 13.0.1) - restriction: >= netstandard2.0 + Fake.DotNet.MSBuild (6.0) - restriction: >= netstandard2.0 + BlackFox.VsWhere (>= 1.1) - restriction: >= netstandard2.0 + Fake.Core.Environment (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.Process (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.String (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.0) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 6.0) - restriction: >= netstandard2.0 + FSharp.Core (>= 6.0.3) - restriction: >= netstandard2.0 + MSBuild.StructuredLogger (>= 2.1.545) - restriction: >= netstandard2.0 + Fake.DotNet.NuGet (6.0) - restriction: >= netstandard2.0 + Fake.Core.Environment (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.Process (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.SemVer (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.String (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.Tasks (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.Xml (>= 6.0) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 6.0) - restriction: >= netstandard2.0 + Fake.Net.Http (>= 6.0) - restriction: >= netstandard2.0 + FSharp.Core (>= 6.0.3) - restriction: >= netstandard2.0 + Newtonsoft.Json (>= 13.0.1) - restriction: >= netstandard2.0 + NuGet.Protocol (>= 6.0) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (6.0) + Fake.Core.String (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.0) - restriction: >= netstandard2.0 + FSharp.Core (>= 6.0.3) - restriction: >= netstandard2.0 + Fake.IO.Zip (6.0) + Fake.Core.String (>= 6.0) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 6.0) - restriction: >= netstandard2.0 + FSharp.Core (>= 6.0.3) - restriction: >= netstandard2.0 + Fake.Net.Http (6.0) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.0) - restriction: >= netstandard2.0 + FSharp.Core (>= 6.0.3) - restriction: >= netstandard2.0 + Fake.Tools.Git (6.0) + Fake.Core.Environment (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.Process (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.SemVer (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.String (>= 6.0) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 6.0) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 6.0) - restriction: >= netstandard2.0 + FSharp.Core (>= 6.0.3) - restriction: >= netstandard2.0 + FParsec (1.1.1) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.3.4) - restriction: || (>= net45) (>= netstandard2.0) + System.ValueTuple (>= 4.4) - restriction: >= net45 + FSharp.Control.AsyncSeq (3.2.1) - restriction: || (>= net452) (>= netstandard2.0) + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + Microsoft.Bcl.AsyncInterfaces (>= 5.0) - restriction: >= netstandard2.0 + FSharp.Control.Reactive (5.0.5) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + System.Reactive (>= 5.0 < 6.0) - restriction: >= netstandard2.0 + FSharp.Core (7.0.300) - restriction: || (>= net452) (>= netstandard2.0) + FSharpx.Async (1.14.1) - restriction: || (>= net452) (>= netstandard2.0) + FSharp.Control.AsyncSeq (>= 2.0.21) - restriction: || (>= net452) (>= netstandard2.0) + FSharp.Core (>= 4.6.2) - restriction: || (>= net452) (>= netstandard2.0) + FSharpx.Collections (3.1) - restriction: || (>= net452) (>= netstandard2.0) + FSharp.Core (>= 4.3.4) - restriction: >= netstandard2.0 + FSharpx.Extras (3.1) + FSharp.Core (>= 4.6.2) - restriction: || (>= net452) (>= netstandard2.0) + FSharpx.Async (>= 1.14.1) - restriction: || (>= net452) (>= netstandard2.0) + FSharpx.Collections (>= 2.1.2) - restriction: || (>= net452) (>= netstandard2.0) + System.Reflection.Emit.Lightweight (>= 4.7) - restriction: || (>= net452) (>= netstandard2.0) + Microsoft.Bcl.AsyncInterfaces (7.0) - restriction: >= netstandard2.0 + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) + Microsoft.Build.Framework (17.6.3) - restriction: >= netstandard2.0 + Microsoft.VisualStudio.Setup.Configuration.Interop (>= 3.2.2146) - restriction: >= net472 + Microsoft.Win32.Registry (>= 5.0) - restriction: && (< net472) (< net7.0) (>= netstandard2.0) + System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: >= net472 + System.Security.Permissions (>= 7.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net7.0) + System.Security.Principal.Windows (>= 5.0) - restriction: && (< net472) (< net7.0) (>= netstandard2.0) + Microsoft.Build.Utilities.Core (17.6.3) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 17.6.3) - restriction: >= netstandard2.0 + Microsoft.IO.Redist (>= 6.0) - restriction: >= net472 + Microsoft.NET.StringTools (>= 17.6.3) - restriction: >= netstandard2.0 + Microsoft.VisualStudio.Setup.Configuration.Interop (>= 3.2.2146) - restriction: || (>= net472) (>= net7.0) + Microsoft.Win32.Registry (>= 5.0) - restriction: && (< net472) (< net7.0) (>= netstandard2.0) + System.Collections.Immutable (>= 7.0) - restriction: >= netstandard2.0 + System.Configuration.ConfigurationManager (>= 7.0) - restriction: >= netstandard2.0 + System.Memory (>= 4.5.5) - restriction: || (>= net472) (&& (< net7.0) (>= netstandard2.0)) + System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: || (>= net472) (&& (< net7.0) (>= netstandard2.0)) + System.Security.Permissions (>= 7.0) - restriction: >= netstandard2.0 + System.Security.Principal.Windows (>= 5.0) - restriction: || (>= net472) (&& (< net7.0) (>= netstandard2.0)) + System.Text.Encoding.CodePages (>= 7.0) - restriction: && (< net472) (< net7.0) (>= netstandard2.0) + Microsoft.IO.Redist (6.0) - restriction: >= net472 + System.Buffers (>= 4.5.1) - restriction: >= net472 + System.Memory (>= 4.5.4) - restriction: >= net472 + Microsoft.NET.StringTools (17.6.3) - restriction: >= netstandard2.0 + System.Memory (>= 4.5.5) - restriction: || (>= net472) (&& (< net7.0) (>= netstandard2.0)) + System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: || (>= net472) (&& (< net7.0) (>= netstandard2.0)) + Microsoft.NETCore.Platforms (7.0.4) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp3.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= net5.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) + Microsoft.NETCore.Targets (5.0) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp3.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) + Microsoft.VisualStudio.Setup.Configuration.Interop (3.6.2115) - restriction: || (>= net472) (>= net7.0) + Microsoft.Win32.Registry (5.0) - restriction: || (&& (< net45) (>= netstandard2.0)) (&& (< net472) (< net7.0) (>= netstandard2.0)) + System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= uap10.1) + System.Security.AccessControl (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + Microsoft.Win32.SystemEvents (7.0) - restriction: >= net6.0 + Mono.Posix.NETStandard (1.0) - restriction: >= netstandard2.0 + MSBuild.StructuredLogger (2.1.820) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 17.5) - restriction: >= netstandard2.0 + Microsoft.Build.Utilities.Core (>= 17.5) - restriction: >= netstandard2.0 + Newtonsoft.Json (13.0.3) - restriction: >= netstandard2.0 + NuGet.Common (6.6.1) - restriction: >= netstandard2.0 + NuGet.Frameworks (>= 6.6.1) - restriction: >= netstandard2.0 + NuGet.Configuration (6.6.1) - restriction: >= netstandard2.0 + NuGet.Common (>= 6.6.1) - restriction: >= netstandard2.0 + System.Security.Cryptography.ProtectedData (>= 4.4) - restriction: && (< net472) (>= netstandard2.0) + NuGet.Frameworks (6.6.1) - restriction: >= netstandard2.0 + NuGet.Packaging (6.6.1) - restriction: >= netstandard2.0 + Newtonsoft.Json (>= 13.0.1) - restriction: >= netstandard2.0 + NuGet.Configuration (>= 6.6.1) - restriction: >= netstandard2.0 + NuGet.Versioning (>= 6.6.1) - restriction: >= netstandard2.0 + System.Security.Cryptography.Cng (>= 5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net5.0) + System.Security.Cryptography.Pkcs (>= 5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net5.0) + NuGet.Protocol (6.6.1) - restriction: >= netstandard2.0 + NuGet.Packaging (>= 6.6.1) - restriction: >= netstandard2.0 + NuGet.Versioning (6.6.1) - restriction: >= netstandard2.0 + Octokit (7.0.1) - restriction: >= netstandard2.0 + SharpCompress (0.33) + System.Memory (>= 4.5.5) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) + System.Text.Encoding.CodePages (>= 7.0) - restriction: || (>= net462) (&& (< net6.0) (>= netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) + System.Buffers (4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.1) (>= netstandard2.0)) (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) (>= net462) (&& (>= net5.0) (< netstandard2.1)) (&& (< net6.0) (>= netstandard2.0)) (&& (< net6.0) (>= netstandard2.1)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard2.0) (< netstandard2.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + System.Collections.Immutable (7.0) - restriction: >= netstandard2.0 + System.Memory (>= 4.5.5) - restriction: || (>= net462) (&& (< net6.0) (>= netstandard2.0)) + System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: || (>= net462) (&& (>= net6.0) (< net7.0)) (&& (< net6.0) (>= netstandard2.0)) + System.Configuration.ConfigurationManager (7.0) - restriction: >= netstandard2.0 + System.Diagnostics.EventLog (>= 7.0) - restriction: >= net7.0 + System.Security.Cryptography.ProtectedData (>= 7.0) - restriction: || (&& (< net462) (>= netstandard2.0)) (>= net6.0) + System.Security.Permissions (>= 7.0) - restriction: || (>= net462) (>= netstandard2.0) + System.Diagnostics.EventLog (7.0) - restriction: >= net7.0 + System.Drawing.Common (7.0) - restriction: >= net6.0 + Microsoft.Win32.SystemEvents (>= 7.0) - restriction: >= net6.0 + System.Formats.Asn1 (7.0) - restriction: || (&& (< net462) (>= netstandard2.0)) (&& (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netstandard2.1) + System.Buffers (>= 4.5.1) - restriction: || (>= net462) (&& (< net6.0) (>= netstandard2.0)) + System.Memory (>= 4.5.5) - restriction: || (>= net462) (&& (< net6.0) (>= netstandard2.0)) + System.IO (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= net5.0) (< netstandard1.4)) (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (< monoandroid) (>= net5.0) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (>= net5.0) (< netstandard1.4)) (&& (< net46) (>= net461) (< netstandard1.4) (>= netstandard2.0)) (&& (< net46) (>= net461) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= net462) (< netstandard1.4) (>= netstandard2.0)) (&& (< net46) (>= net462) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= net47) (>= netstandard2.0)) (&& (>= net461) (>= net5.0) (< netstandard1.4)) (&& (>= net461) (>= net5.0) (< netstandard1.6)) (&& (>= net462) (>= net5.0) (< netstandard1.4)) (&& (>= net462) (>= net5.0) (< netstandard1.6)) (&& (>= net463) (>= net5.0) (< netstandard1.4)) (&& (>= net463) (>= net5.0) (< netstandard1.6)) (&& (>= net463) (>= net5.0) (< netstandard2.0)) (&& (>= net463) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net463) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net47) (< net472) (>= netstandard2.0)) (&& (>= net47) (>= net5.0)) + System.Memory (4.5.5) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net462) (&& (>= net5.0) (< netstandard2.1)) (&& (< net6.0) (>= netstandard2.0)) (&& (< net6.0) (>= netstandard2.1)) (&& (< net7.0) (>= netstandard2.0)) (&& (>= netstandard2.0) (< netstandard2.1)) (&& (>= netstandard2.0) (>= uap10.1)) + System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.1)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (< uap10.1) (>= wpa81)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Numerics.Vectors (>= 4.4) - restriction: && (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Numerics.Vectors (>= 4.5) - restriction: >= net461 + System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (>= monoandroid) (< netstandard1.1)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Numerics.Vectors (4.5) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (>= net461) (>= netstandard2.0)) (>= net462) + System.Reactive (5.0) - restriction: >= netstandard2.0 + System.Runtime.InteropServices.WindowsRuntime (>= 4.3) - restriction: && (< net472) (< netcoreapp3.1) (>= netstandard2.0) + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (>= net472) (&& (< netcoreapp3.1) (>= netstandard2.0)) (>= uap10.1) + System.Reflection.Emit.ILGeneration (4.7) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net452) (>= netstandard2.0)) (&& (< net45) (>= net452) (< netstandard2.0)) (&& (>= net452) (< netstandard2.0) (>= wpa81)) (&& (>= net452) (< portable-net45+wp8)) (&& (>= net452) (>= uap10.1)) (&& (>= netstandard2.0) (< portable-net45+wp8) (>= win8)) (&& (>= netstandard2.0) (< portable-net45+wp8) (< win8)) (&& (>= netstandard2.0) (>= uap10.1)) + System.Reflection.Emit.Lightweight (4.7) - restriction: || (>= net452) (>= netstandard2.0) + System.Reflection.Emit.ILGeneration (>= 4.7) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard2.0) (>= wpa81)) (&& (>= portable-net45+win8+wp8+wpa81) (< portable-net45+wp8) (< win8)) (&& (< portable-net45+wp8) (>= win8)) (>= uap10.1) + System.Runtime (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp3.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= net5.0) (< netstandard1.4)) (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (< monoandroid) (>= net5.0) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (>= net5.0) (< netstandard1.4)) (&& (< net46) (>= net461) (< netstandard1.4) (>= netstandard2.0)) (&& (< net46) (>= net461) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= net462) (< netstandard1.4) (>= netstandard2.0)) (&& (< net46) (>= net462) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= net47) (>= netstandard2.0)) (&& (>= net461) (>= net5.0) (< netstandard1.4)) (&& (>= net461) (>= net5.0) (< netstandard1.6)) (&& (>= net462) (>= net5.0) (< netstandard1.4)) (&& (>= net462) (>= net5.0) (< netstandard1.6)) (&& (>= net463) (>= net5.0) (< netstandard1.4)) (&& (>= net463) (>= net5.0) (< netstandard1.6)) (&& (>= net463) (>= net5.0) (< netstandard2.0)) (&& (>= net463) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net463) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net47) (< net472) (>= netstandard2.0)) (&& (>= net47) (>= net5.0)) + Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.CompilerServices.Unsafe (6.0) - restriction: || (&& (>= monoandroid) (< netstandard1.1) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< monoandroid) (< netstandard1.0) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net461) (>= netstandard2.0)) (>= net462) (&& (>= net6.0) (< net7.0)) (&& (>= net6.0) (< netstandard2.1)) (&& (< net6.0) (>= netstandard2.0)) (&& (< net6.0) (>= netstandard2.1)) (&& (< netstandard1.0) (>= netstandard2.0) (>= win8)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard2.0) (< netstandard2.1)) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= wp8)) (&& (< netstandard2.1) (>= xamarinios)) (&& (< netstandard2.1) (>= xamarinmac)) + System.Runtime.InteropServices.WindowsRuntime (4.3) - restriction: && (< net472) (< netcoreapp3.1) (>= netstandard2.0) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.AccessControl (6.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (>= net461) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= net462) (< net472) (>= netstandard2.0)) (&& (>= net462) (>= net7.0)) (&& (< net472) (< net6.0) (>= netstandard2.0)) (&& (< net6.0) (>= net7.0)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + System.Security.Principal.Windows (>= 5.0) - restriction: || (>= net461) (&& (< net6.0) (>= netstandard2.0)) + System.Security.Cryptography.Algorithms (4.3.1) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= net5.0) (< netstandard1.4)) (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (< monoandroid) (>= net5.0) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (>= net5.0) (< netstandard1.4)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net461) (< net462) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net461) (>= net5.0) (< netstandard1.6)) (&& (>= net462) (>= net5.0) (< netstandard1.6)) (&& (>= net462) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net47) (< net472) (>= netstandard2.0)) (&& (>= net47) (>= net5.0)) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< netstandard1.6)) (>= net463) + System.Security.Cryptography.Cng (5.0) - restriction: || (&& (< net462) (>= netstandard2.0) (< netstandard2.1)) (&& (< net472) (>= netstandard2.0)) (>= net5.0) (&& (< net6.0) (>= netstandard2.1)) + Microsoft.NETCore.Platforms (>= 5.0) - restriction: && (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos) + System.Formats.Asn1 (>= 5.0) - restriction: && (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Algorithms (>= 4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< net462) (< netstandard1.6)) (&& (>= net462) (< netstandard1.6)) (>= net47) + System.Security.Cryptography.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= net5.0) (< netstandard1.4)) (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (< monoandroid) (>= net5.0) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (>= net5.0) (< netstandard1.4)) (&& (< net46) (>= net461) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= net462) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= net47) (>= netstandard2.0)) (&& (>= net461) (>= net5.0) (< netstandard1.6)) (&& (>= net462) (>= net5.0) (< netstandard1.6)) (&& (>= net463) (>= net5.0) (< netstandard1.4)) (&& (>= net463) (>= net5.0) (< netstandard1.6)) (&& (>= net463) (>= net5.0) (< netstandard2.0)) (&& (>= net463) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net463) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net47) (< net472) (>= netstandard2.0)) (&& (>= net47) (>= net5.0)) + System.Security.Cryptography.Pkcs (7.0.3) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net5.0) + System.Buffers (>= 4.5.1) - restriction: && (< net462) (>= netstandard2.0) (< netstandard2.1) + System.Formats.Asn1 (>= 7.0) - restriction: || (&& (< net462) (>= netstandard2.0)) (>= netstandard2.1) + System.Memory (>= 4.5.5) - restriction: && (< net462) (>= netstandard2.0) (< netstandard2.1) + System.Security.Cryptography.Cng (>= 5.0) - restriction: || (&& (< net462) (>= netstandard2.0) (< netstandard2.1)) (&& (< net6.0) (>= netstandard2.1)) + System.Security.Cryptography.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (>= net5.0) (< netstandard1.4)) (&& (< monoandroid) (>= net5.0) (< netstandard1.6)) (&& (< monoandroid) (>= net5.0) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (>= net5.0) (< netstandard1.4)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< net46) (>= net461) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= net47) (>= netstandard2.0)) (&& (>= net461) (< net462) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net461) (>= net5.0) (< netstandard1.4)) (&& (>= net461) (>= net5.0) (< netstandard1.6)) (&& (>= net461) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net462) (>= net5.0) (< netstandard1.4)) (&& (>= net462) (>= net5.0) (< netstandard1.6)) (&& (>= net462) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net462) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net463) (>= net5.0) (< netstandard1.4)) (&& (>= net463) (>= net5.0) (< netstandard1.6)) (&& (>= net463) (>= net5.0) (< netstandard2.0)) (&& (>= net463) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net463) (< netstandard1.6) (>= netstandard2.0)) (&& (>= net47) (< net472) (>= netstandard2.0)) (&& (>= net47) (>= net5.0)) (&& (>= net47) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net47) (< netstandard1.6) (>= netstandard2.0)) + System.Security.Cryptography.ProtectedData (7.0.1) - restriction: || (&& (< net462) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (>= net6.0) + System.Memory (>= 4.5.5) - restriction: && (< net462) (< net6.0) (>= netstandard2.0) + System.Security.Permissions (7.0) - restriction: >= netstandard2.0 + System.Security.AccessControl (>= 6.0) - restriction: || (>= net462) (&& (< net6.0) (>= netstandard2.0)) + System.Windows.Extensions (>= 7.0) - restriction: >= net6.0 + System.Security.Principal.Windows (5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (>= net461) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= net461) (>= netcoreapp2.0)) (>= net472) (&& (< net7.0) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + Microsoft.NETCore.Platforms (>= 5.0) - restriction: || (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) + System.Text.Encoding.CodePages (7.0) - restriction: || (>= net462) (&& (< net472) (< net7.0) (>= netstandard2.0)) (&& (< net6.0) (>= netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) + System.Memory (>= 4.5.5) - restriction: || (>= net462) (&& (< net6.0) (>= netstandard2.0)) + System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: || (>= net462) (&& (>= net6.0) (< net7.0)) (&& (< net6.0) (>= netstandard2.0)) + System.Threading.Tasks.Extensions (4.5.4) - restriction: || (&& (>= net462) (>= netstandard2.0)) (>= net472) (&& (< netcoreapp3.1) (>= netstandard2.0)) (&& (>= netstandard2.0) (< netstandard2.1)) (&& (>= netstandard2.0) (>= uap10.1)) + System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= wp8) + System.ValueTuple (4.5) - restriction: && (>= net45) (>= netstandard2.0) + System.Windows.Extensions (7.0) - restriction: >= net6.0 + System.Drawing.Common (>= 7.0) - restriction: >= net6.0 diff --git a/src/Metadata.Lib/Metadata.Lib.fsproj b/src/Metadata.Lib/Metadata.Lib.fsproj index 447e082..73f0c5a 100644 --- a/src/Metadata.Lib/Metadata.Lib.fsproj +++ b/src/Metadata.Lib/Metadata.Lib.fsproj @@ -5,7 +5,7 @@ true - + @@ -15,4 +15,4 @@ - \ No newline at end of file + diff --git a/src/Metadata.Lib/RoleValidator.fs b/src/Metadata.Lib/RoleValidator.fs index dd4a25f..2424c2e 100644 --- a/src/Metadata.Lib/RoleValidator.fs +++ b/src/Metadata.Lib/RoleValidator.fs @@ -11,7 +11,7 @@ type RoleValidator = member rv.Validate(role: string) : Result = match rv with | Roles None -> Ok() - | Roles (Some roles) -> + | Roles(Some roles) -> if roles |> List.contains role then Ok() else diff --git a/src/Metadata.Lib/Track.fs b/src/Metadata.Lib/Track.fs index 115a0b2..225952f 100644 --- a/src/Metadata.Lib/Track.fs +++ b/src/Metadata.Lib/Track.fs @@ -12,6 +12,7 @@ module Track = let load (fileName: string) : Result = try + // fsharplint:disable-next-line redundantNewKeyword // it's IDisposable let track = new FlacFile(fileName) Ok { Path = fileName; Track = Flac track } with @@ -20,7 +21,7 @@ module Track = Error(FileDoesNotExist err.Message) | :? Exceptions.FlacLibSharpInvalidFormatException as err -> log.Error("Loading track '{FileName}': {Err}", fileName, err) - Error(sprintf "Not a valid FLAC file: '%s'" fileName |> InvalidFileFormat) + Error($"Not a valid FLAC file: '%s{fileName}'" |> InvalidFileFormat) | err -> log.Error("Loading track '{FileName}': {Err}", fileName, err) Error(UnexpectedError err.Message) diff --git a/src/Metadata.Lib/TrackHelpers.fs b/src/Metadata.Lib/TrackHelpers.fs index aa5b3ec..dab5aa2 100644 --- a/src/Metadata.Lib/TrackHelpers.fs +++ b/src/Metadata.Lib/TrackHelpers.fs @@ -12,8 +12,8 @@ let extractTrackNumber (track: AudioTrack) : Result = |> List.head |> int |> Ok - with - | :? System.FormatException -> MissingOrInvalidTag TrackNumberTag |> Error + with :? System.FormatException -> + MissingOrInvalidTag TrackNumberTag |> Error let extractDiscNumberWithDefault (track: AudioTrack) : Result = try @@ -22,8 +22,8 @@ let extractDiscNumberWithDefault (track: AudioTrack) : Result 0 |> Ok | "" :: _tail -> 0 |> Ok | head :: _tail -> head |> int |> Ok - with - | :? System.FormatException -> MissingOrInvalidTag DiscNumberTag |> Error + with :? System.FormatException -> + MissingOrInvalidTag DiscNumberTag |> Error let private extractDiscAndTrackNumbers (track: AudioTrack) = result { diff --git a/src/Metadata.Lib/Utils.fs b/src/Metadata.Lib/Utils.fs index 1b5dee4..7dd8fc1 100644 --- a/src/Metadata.Lib/Utils.fs +++ b/src/Metadata.Lib/Utils.fs @@ -18,10 +18,7 @@ module List = /// Remove all occurrences of every item in values from the list. let removeByValues (values: 'T list) (lst: 'T list) : 'T list = let folder (item: 'T) (acc: 'T list) = - if List.contains item values then - acc - else - item :: acc + if List.contains item values then acc else item :: acc List.foldBack folder lst [] @@ -36,8 +33,8 @@ module List = lst |> List.map fn - let groupByConsecutively (fKey: 'T -> 'key) (lst: 'T list) : ('key * 'T list) list = - let loop (item: 'T) (state: ('key * 'T list) list) : ('key * 'T list) list = + let groupByConsecutively (fKey: 'T -> 'Key) (lst: 'T list) : ('Key * 'T list) list = + let loop (item: 'T) (state: ('Key * 'T list) list) : ('Key * 'T list) list = let key = fKey item match state with diff --git a/src/Metadata.Lib/WorkMovement.fs b/src/Metadata.Lib/WorkMovement.fs index 22d8fa3..5e7e01d 100644 --- a/src/Metadata.Lib/WorkMovement.fs +++ b/src/Metadata.Lib/WorkMovement.fs @@ -22,11 +22,7 @@ let splitTitle2WorkMovement (track: AudioTrack) = /// Extract work name from track's title. Return None if can not split to work/movement let workFromTitle = splitTitle2WorkMovement - >> fun (work, movement) -> - if Option.isSome movement then - Some work - else - None + >> fun (work, movement) -> if Option.isSome movement then Some work else None /// Parsing movement part of the title. Should be able to parse the following as /// indexed: @@ -82,20 +78,20 @@ module MovementParser = let parseLayout movement = run titleLayout movement |> function - | Success (r, _, _) -> + | Success(r, _, _) -> log.Verbose("Parsing layout of '{Movement}' returned: {R}", movement, r) r - | Failure (msg, _, _) -> + | Failure(msg, _, _) -> failwith $"[BUG]: Error parsing movement! this should not have happened. Error was: {msg}" /// Extract the movement name (remove prefixes) let parseMovement movement = run title movement |> function - | Success (s, _, _) -> + | Success(s, _, _) -> log.Verbose("Parsing title of '{Movement}' returned: {S}", movement, s) s - | Failure (msg, _, _) -> + | Failure(msg, _, _) -> failwith $"[BUG]: Error parsing movement! this should not have happened. Error was: {msg}" /// An already parsed work (not applied). Only use `Create` to initialize @@ -160,7 +156,7 @@ let extractWorks (ConsecutiveTracks tracks) addRomans = |> Result.bind (Work.Create (titleOpt |> Option.get) addRomans)) /// Applies (saves) the work data -let applyWork (Work (name, ConsecutiveTracks tracks)) = +let applyWork (Work(name, ConsecutiveTracks tracks)) = let saveTrack t = result { do! diff --git a/src/Metadata.Lib/formats/Flac.fs b/src/Metadata.Lib/formats/Flac.fs index ca462b1..270e877 100644 --- a/src/Metadata.Lib/formats/Flac.fs +++ b/src/Metadata.Lib/formats/Flac.fs @@ -63,7 +63,6 @@ let getTagStringValue (track: FlacFile) (tag: TagName) = let applyChanges (track: FlacFile) = try track.Save() |> Ok - with - | ex -> + with ex -> log.Error("Saving track: {Ex}", ex) Error [ FileSaveError ex.Message ] diff --git a/src/Metadata.Test/MovementParserTests.fs b/src/Metadata.Test/MovementParserTests.fs index 9937e6b..51a1514 100644 --- a/src/Metadata.Test/MovementParserTests.fs +++ b/src/Metadata.Test/MovementParserTests.fs @@ -41,7 +41,7 @@ type MovementParserTests() = member this.``Simple parsing should apply``((testParser, data, expected)) = run testParser data |> function - | Success (res, _, _) when res = expected -> () + | Success(res, _, _) when res = expected -> () | x -> Assert.Fail($"Unexpected result '%A{x}', expected '{expected}'") [] diff --git a/src/Metadata.Test/Tests.fs b/src/Metadata.Test/Tests.fs index 6bb9219..c1dad7f 100644 --- a/src/Metadata.Test/Tests.fs +++ b/src/Metadata.Test/Tests.fs @@ -68,8 +68,7 @@ module ``Track operations`` = [] let ``mkPersonnel should correctly convert Personnel to strings`` () = let testData = - [ ("Musician A", [ "Guitar"; "Voice" ]) - ("Musician B", [ "Violin" ]) ] + [ ("Musician A", [ "Guitar"; "Voice" ]); ("Musician B", [ "Violin" ]) ] let emptyValidator = None |> Roles let res = Track.mkPersonnel emptyValidator testData |> Result.unwrap @@ -83,8 +82,7 @@ module ``Track operations`` = let validator = Some [ "Guitar"; "Cello" ] |> Roles let testData = - [ ("Musician A", [ "Guitar"; "NOSUCH1" ]) - ("Musician B", [ "NOSUCH2" ]) ] + [ ("Musician A", [ "Guitar"; "NOSUCH1" ]); ("Musician B", [ "NOSUCH2" ]) ] let errors = Track.mkPersonnel validator testData |> Result.unwrapError errors |> should haveLength 2 @@ -94,8 +92,7 @@ module ``Track operations`` = let validator = None |> Roles let testData = - [ ("Musician A", [ "Guitar"; "NOSUCH1" ]) - ("Musician B", [ "NOSUCH2" ]) ] + [ ("Musician A", [ "Guitar"; "NOSUCH1" ]); ("Musician B", [ "NOSUCH2" ]) ] let res = Track.mkPersonnel validator testData |> Result.unwrap res |> should contain (Personnel "Musician A - NOSUCH1") @@ -107,10 +104,7 @@ module ``Track operations`` = // sample track contains 3 credit entries. let track = "with-credits.flac" |> loadTrackSuccess - Track.addCredits - track - [ Personnel "First Last - Cello" - Personnel "The Orchestra - Orchestra" ] + Track.addCredits track [ Personnel "First Last - Cello"; Personnel "The Orchestra - Orchestra" ] let p = Track.getTagStringValue track CreditTag p |> should contain "First Last - Cello" @@ -122,10 +116,7 @@ module ``Track operations`` = let track = "with-credits.flac" |> loadTrackSuccess let duplicate = Personnel "Musician A - Guitar" - Track.addCredits - track - [ duplicate - Personnel "Musician C - Double Bass" ] + Track.addCredits track [ duplicate; Personnel "Musician C - Double Bass" ] let p = Track.getTagStringValue track CreditTag p |> should haveLength 4 @@ -138,10 +129,7 @@ module ``Track operations`` = let existingValue1 = "Musician A - Guitar" let existingValue2 = "Musician B - Vocals" - Track.deleteCredits - track - [ Personnel existingValue1 - Personnel existingValue2 ] + Track.deleteCredits track [ Personnel existingValue1; Personnel existingValue2 ] |> ignore Track.getTagStringValue track CreditTag diff --git a/src/Metadata.Test/TrackHelpersTests.fs b/src/Metadata.Test/TrackHelpersTests.fs index db63218..48f9b80 100644 --- a/src/Metadata.Test/TrackHelpersTests.fs +++ b/src/Metadata.Test/TrackHelpersTests.fs @@ -38,15 +38,10 @@ module MetadataHelpersTests = [] let ``sort tracks by tracks and cd number if cd is empty`` () = - let before = - [ "track3.flac" - "track1.flac" - "track2.flac" ] + let before = [ "track3.flac"; "track1.flac"; "track2.flac" ] let expected = - [ "track1.flac" - "track2.flac" - "track3.flac" ] + [ "track1.flac"; "track2.flac"; "track3.flac" ] |> List.map loadTracksPath before @@ -58,10 +53,7 @@ module MetadataHelpersTests = [] let ``sort tracks fails if there are duplicate track and disc numbers`` () = - let tracks = - [ "track2.flac" - "another-track1.flac" - "track1.flac" ] + let tracks = [ "track2.flac"; "another-track1.flac"; "track1.flac" ] tracks |> List.map loadTrackSuccess @@ -101,9 +93,7 @@ module MetadataHelpersTests = [] let ``Consecutive tracks sorts the provided tracks`` () = let result = - [ "disc1track2.flac" - "disc1track1.flac" - "disc1track3.flac" ] + [ "disc1track2.flac"; "disc1track1.flac"; "disc1track3.flac" ] |> createConsecutiveTracks |> Result.unwrap diff --git a/src/Metadata.Test/Utils.fs b/src/Metadata.Test/Utils.fs index e8b84dc..1c7ed5f 100644 --- a/src/Metadata.Test/Utils.fs +++ b/src/Metadata.Test/Utils.fs @@ -7,9 +7,7 @@ open RoonTagger.Metadata /// Get the path for a file in the project 'Resources' directory. let getResourcePath fileName = - [| Environment.CurrentDirectory - "Resources" - fileName |] + [| Environment.CurrentDirectory; "Resources"; fileName |] |> Path.Combine /// Force extract flac file from `AudioTrack`. Throw exception if not flac. @@ -20,8 +18,8 @@ let extractFlac (file: AudioTrack) = /// Extract the match value of ParserResult let inline unwrapParserResult (pr: ParserResult<_, _>) = match pr with - | Success (result, _, _) -> result - | Failure (msg, _, _) -> failwith $"Trying to unwrap failure: {msg}" + | Success(result, _, _) -> result + | Failure(msg, _, _) -> failwith $"Trying to unwrap failure: {msg}" /// A "use"able temporary flac file copier from the provided flac file name in the tests _Resource_ directory. type CopiedFile(fileName: string) = @@ -37,7 +35,8 @@ type CopiedFile(fileName: string) = File.Delete(targetPath) with // Dispose should be idempotent - | _ -> () + | _ -> + () [] module Result = diff --git a/src/Metadata.Test/UtilsTests.fs b/src/Metadata.Test/UtilsTests.fs index 26886a3..cca03a6 100644 --- a/src/Metadata.Test/UtilsTests.fs +++ b/src/Metadata.Test/UtilsTests.fs @@ -8,29 +8,18 @@ module ListTests = [] let ``groupByConsecutively should group things in order`` () = - let data = - [ (1, "one") - (1, "two") - (1, "three") - (2, "one") ] + let data = [ (1, "one"); (1, "two"); (1, "three"); (2, "one") ] let expected = - [ (1, [ (1, "one"); (1, "two"); (1, "three") ]) - (2, [ (2, "one") ]) ] + [ (1, [ (1, "one"); (1, "two"); (1, "three") ]); (2, [ (2, "one") ]) ] List.groupByConsecutively fst data |> should equal expected [] let ``groupByConsecutively should separate items with same key if not consecutive`` () = - let data = - [ (1, "one") - (1, "two") - (2, "one") - (1, "three") ] + let data = [ (1, "one"); (1, "two"); (2, "one"); (1, "three") ] let expected = - [ (1, [ (1, "one"); (1, "two") ]) - (2, [ (2, "one") ]) - (1, [ (1, "three") ]) ] + [ (1, [ (1, "one"); (1, "two") ]); (2, [ (2, "one") ]); (1, [ (1, "three") ]) ] List.groupByConsecutively fst data |> should equal expected diff --git a/src/Metadata.Test/WorkMovementTests.fs b/src/Metadata.Test/WorkMovementTests.fs index 3c12ad4..6599fe3 100644 --- a/src/Metadata.Test/WorkMovementTests.fs +++ b/src/Metadata.Test/WorkMovementTests.fs @@ -50,7 +50,7 @@ module ``Work and Movements Tests`` = |> Result.unwrap rslt |> should haveLength 1 - let (Work (w, ConsecutiveTracks ts)) = rslt |> List.head + let (Work(w, ConsecutiveTracks ts)) = rslt |> List.head w |> should equal "My work name" ts |> should haveLength 3 ts |> List.head |> extractMovement |> should equal "First movement" @@ -72,7 +72,7 @@ module ``Work and Movements Tests`` = |> Result.unwrap rslt |> should haveLength 1 - let (Work (w, ConsecutiveTracks ts)) = rslt |> List.head + let (Work(w, ConsecutiveTracks ts)) = rslt |> List.head w |> should equal workTitle ts |> should haveLength 4 @@ -93,8 +93,8 @@ module ``Work and Movements Tests`` = |> Result.unwrap rslt |> should haveLength 2 - let (Work (w1, ConsecutiveTracks ts1)) = rslt[0] - let (Work (w2, ConsecutiveTracks ts2)) = rslt[1] + let (Work(w1, ConsecutiveTracks ts1)) = rslt[0] + let (Work(w2, ConsecutiveTracks ts2)) = rslt[1] w1 |> should equal workTitle w2 |> should equal workTitle ts1 |> should haveLength 2 @@ -114,7 +114,7 @@ module ``Work and Movements Tests`` = |> Result.unwrap rslt |> should haveLength 1 - let (Work (w, ConsecutiveTracks ts)) = rslt[0] + let (Work(w, ConsecutiveTracks ts)) = rslt[0] w |> should equal workTitle ts[0] |> extractMovement |> should equal "I. First movement" @@ -128,7 +128,7 @@ module ``Work and Movements Tests`` = [ mkTrackWithTitle "disc1track1.flac" $"{workTitle}: I. First movement" mkTrackWithTitle "disc1track2.flac" $"{workTitle}: II. Second movement" ] - let (Work (w, ConsecutiveTracks ts)) = + let (Work(w, ConsecutiveTracks ts)) = ConsecutiveTracks.Create data |> Result.bind (Work.Create workTitle false) |> Result.unwrap @@ -145,7 +145,7 @@ module ``Work and Movements Tests`` = [ mkTrackWithTitle "disc1track1.flac" $"{workTitle}: First movement" mkTrackWithTitle "disc1track2.flac" $"{workTitle}: Second movement" ] - let (Work (w, ConsecutiveTracks ts)) = + let (Work(w, ConsecutiveTracks ts)) = ConsecutiveTracks.Create data |> Result.bind (Work.Create workTitle true) |> Result.unwrap @@ -162,7 +162,7 @@ module ``Work and Movements Tests`` = [ mkTrackWithTitle "disc1track1.flac" $"{workTitle}: 1. First movement" mkTrackWithTitle "disc1track2.flac" $"{workTitle}: Second movement" ] - let (Work (w, ConsecutiveTracks ts)) = + let (Work(w, ConsecutiveTracks ts)) = ConsecutiveTracks.Create data |> Result.bind (Work.Create workTitle true) |> Result.unwrap @@ -179,7 +179,7 @@ module ``Work and Movements Tests`` = [ mkTrackWithTitle "disc1track1.flac" $"{workTitle}: No 1. First movement" mkTrackWithTitle "disc1track2.flac" $"{workTitle}: Second movement" ] - let (Work (w, ConsecutiveTracks ts)) = + let (Work(w, ConsecutiveTracks ts)) = ConsecutiveTracks.Create data |> Result.bind (Work.Create workTitle false) |> Result.unwrap diff --git a/src/RoonTagger.Cli.Test/LoggingTests.fs b/src/RoonTagger.Cli.Test/LoggingTests.fs index 8c1e715..9d1ddb8 100644 --- a/src/RoonTagger.Cli.Test/LoggingTests.fs +++ b/src/RoonTagger.Cli.Test/LoggingTests.fs @@ -14,25 +14,18 @@ type LoggingTests() = { File = "file.log" Level = LogLevel.None } - (defaultLC, - 1, - [ (LogEventLevel.Information, true) - (LogEventLevel.Debug, false) ]) + (defaultLC, 1, [ (LogEventLevel.Information, true); (LogEventLevel.Debug, false) ]) ({ defaultLC with Level = LogLevel.Info }, 0, - [ (LogEventLevel.Information, true) - (LogEventLevel.Debug, false) ]) + [ (LogEventLevel.Information, true); (LogEventLevel.Debug, false) ]) - (defaultLC, - 2, - [ (LogEventLevel.Debug, true) - (LogEventLevel.Verbose, false) ]) + (defaultLC, 2, [ (LogEventLevel.Debug, true); (LogEventLevel.Verbose, false) ]) - ({ defaultLC with Level = LogLevel.Debug }, + ({ defaultLC with + Level = LogLevel.Debug }, 0, - [ (LogEventLevel.Debug, true) - (LogEventLevel.Verbose, false) ]) + [ (LogEventLevel.Debug, true); (LogEventLevel.Verbose, false) ]) (defaultLC, 3, [ (LogEventLevel.Verbose, true) ]) (defaultLC, 5, [ (LogEventLevel.Verbose, true) ]) ] diff --git a/src/RoonTagger.Cli.Test/SetTagsTests.fs b/src/RoonTagger.Cli.Test/SetTagsTests.fs index 9775f10..9d8f5c1 100644 --- a/src/RoonTagger.Cli.Test/SetTagsTests.fs +++ b/src/RoonTagger.Cli.Test/SetTagsTests.fs @@ -26,13 +26,10 @@ module SetArgsIntegrationTests = [] let ``--composer sets both composer tag and credits`` () = + // fsharplint:disable-next-line redundantNewKeyword // it's disposable use tmp = new CopiedFile("empty.flac") let path = tmp.Path - - let args = - parser.Parse [| "--composer" - "Composer A,Composer B" - path |] + let args = parser.Parse [| "--composer"; "Composer A,Composer B"; path |] handleCmd args |> function diff --git a/src/RoonTagger.Cli/Arguments.fs b/src/RoonTagger.Cli/Arguments.fs index 3bde570..6c6cd69 100644 --- a/src/RoonTagger.Cli/Arguments.fs +++ b/src/RoonTagger.Cli/Arguments.fs @@ -137,8 +137,8 @@ type MainArgs = let parseDate dateString = try DateTime.Parse dateString - with - | _ -> failwith "Not a valid date format" + with _ -> + failwith "Not a valid date format" let parseTodayOrDate = function diff --git a/src/RoonTagger.Cli/Commands/ExtractWorkCmd.fs b/src/RoonTagger.Cli/Commands/ExtractWorkCmd.fs index 440ae15..6a72ede 100644 --- a/src/RoonTagger.Cli/Commands/ExtractWorkCmd.fs +++ b/src/RoonTagger.Cli/Commands/ExtractWorkCmd.fs @@ -42,7 +42,7 @@ type WorkPromptResponse = | EditWorkName -> "Edit work name" | EditMovements -> "Edit movements in a file" -let printWork (Work (name, ConsecutiveTracks tracks)) = +let printWork (Work(name, ConsecutiveTracks tracks)) = log.Debug("Printing work '{Name}' with tracks: {Tracks}", name, tracks) let grid = Grid() let firstColumn = GridColumn() @@ -105,24 +105,18 @@ type WorkProcessor = } |> Result.teeError (fun _ -> cleanup movementsFilePath |> ignore) - member _.PromptWorkOperation(Work (workName, _)) = + member _.PromptWorkOperation(Work(workName, _)) = let prompt = SelectionPrompt() prompt.Title <- $"[yellow]{workName.EscapeMarkup()}:[/]" - prompt.AddChoices( - [ ViewWork - SaveWork - EditWorkName - EditMovements - DeleteWork ] - ) + prompt.AddChoices([ ViewWork; SaveWork; EditWorkName; EditMovements; DeleteWork ]) |> ignore AnsiConsole.Prompt(prompt) member this.HandleSingleWork(work: Work) : Result = - let rec loop (Work (name, cTracks) as work) = + let rec loop (Work(name, cTracks) as work) = match (this.PromptWorkOperation work) with | SaveWork -> log.Debug("Applying work: {Name}", name) diff --git a/src/RoonTagger.Cli/Commands/SetTagsCmd.fs b/src/RoonTagger.Cli/Commands/SetTagsCmd.fs index dc7374a..c11b907 100644 --- a/src/RoonTagger.Cli/Commands/SetTagsCmd.fs +++ b/src/RoonTagger.Cli/Commands/SetTagsCmd.fs @@ -48,11 +48,7 @@ let extractTags (opts: ParseResults) = let yearTag = opts.TryGetResult Year |> Option.map Metadata.Year - [ titleTag - composerTag - importDateTag - ordTag - yearTag ] + [ titleTag; composerTag; importDateTag; ordTag; yearTag ] |> List.filter Option.isSome |> List.map Option.get // safe as we filtered out the None tags. diff --git a/src/RoonTagger.Cli/Configuration.fs b/src/RoonTagger.Cli/Configuration.fs index 349c60c..2d5ebcd 100644 --- a/src/RoonTagger.Cli/Configuration.fs +++ b/src/RoonTagger.Cli/Configuration.fs @@ -40,11 +40,7 @@ let getConfigFilePath (dir: string) (baseName: string) (version: ConfigurationVe /// Loads the configuration files if exists. let loadConfig (path: string) : Result = - let configFile = - if File.Exists path then - Some path - else - None + let configFile = if File.Exists path then Some path else None try configFile @@ -78,8 +74,7 @@ let saveConfig (config: ConfigurationV1) (path: string) : Result ignore |> Ok - with - | ex -> + with ex -> log.Error("Create configuration directory: {Ex}", ex) Error(CliIOError $"Error creating config directory: {ex.Message}") @@ -89,16 +84,14 @@ let saveConfig (config: ConfigurationV1) (path: string) : Result Ok else Ok() - with - | ex -> + with ex -> log.Error("Backing up configuration: {Ex}", ex) Error(CliIOError $"Error backing up old config: {ex.Message}") do! try File.WriteAllText(path, contents) |> Ok - with - | ex -> + with ex -> log.Error("Saving configuration: {Ex}", ex) Error(CliIOError $"Error saving configuration: {ex.Message}") } diff --git a/src/RoonTagger.Cli/Output.fs b/src/RoonTagger.Cli/Output.fs index 58e3616..8a75412 100644 --- a/src/RoonTagger.Cli/Output.fs +++ b/src/RoonTagger.Cli/Output.fs @@ -9,7 +9,7 @@ let error2String (err: MetadataErrors) : string = | FileDoesNotExist err -> err | InvalidFileFormat err -> err | UnexpectedError err -> sprintf "Unexpected error: %s" err - | DeletingNonExistingPersonnel (track, err) -> $"'{track.Path}': Trying to delete non existing credit: {err}" + | DeletingNonExistingPersonnel(track, err) -> $"'{track.Path}': Trying to delete non existing credit: {err}" | FileSaveError err -> $"Error saving file: {err}" | MissingOrInvalidTag tag -> $"Missing or invalid tag: {tag.ToString()}" | UnsupportedRole role -> $"Role '{role}' is not a valid role according to Roon's wiki." diff --git a/src/RoonTagger.Cli/Program.fs b/src/RoonTagger.Cli/Program.fs index 9437b7c..addbe09 100644 --- a/src/RoonTagger.Cli/Program.fs +++ b/src/RoonTagger.Cli/Program.fs @@ -28,7 +28,6 @@ let main argv = |> function | Ok _ -> 0 | _ -> 1 - with - | ex -> + with ex -> AnsiConsole.WriteException(ex) 1 diff --git a/src/RoonTagger.Cli/Resources/Completions/roon-tagger-completion.ps1 b/src/RoonTagger.Cli/Resources/Completions/roon-tagger-completion.ps1 index 21d99f2..6d908a7 100644 --- a/src/RoonTagger.Cli/Resources/Completions/roon-tagger-completion.ps1 +++ b/src/RoonTagger.Cli/Resources/Completions/roon-tagger-completion.ps1 @@ -51,7 +51,7 @@ Register-ArgumentCompleter -Native -CommandName 'roon-tagger' -ScriptBlock { [CompletionResult]::new('--title', 'title', [CompletionResultType]::ParameterName, 'The title to set') [CompletionResult]::new('--import-date', 'import-date', [CompletionResultType]::ParameterName, 'The date the track was imported to roon') [CompletionResult]::new('--release-date', 'release-date', [CompletionResultType]::ParameterName, 'The release date of the track/album') - [CompletionResult]::new('--compser', 'compser', [CompletionResultType]::ParameterName, 'The composer to set (also as credits)') + [CompletionResult]::new('--composer', 'composer', [CompletionResultType]::ParameterName, 'The composer to set (also as credits)') [CompletionResult]::new('--year', 'year', [CompletionResultType]::ParameterName, 'Album release date') [CompletionResult]::new('--verbose', 'verbose', [CompletionResultType]::ParameterName, 'Enable verbose output') [CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Prints help information') diff --git a/src/RoonTagger.Cli/TagsInFile.fs b/src/RoonTagger.Cli/TagsInFile.fs index ee97618..bf95aa5 100644 --- a/src/RoonTagger.Cli/TagsInFile.fs +++ b/src/RoonTagger.Cli/TagsInFile.fs @@ -38,8 +38,7 @@ let writeValues (lines: string list) path = try File.WriteAllLines(path, lines) Ok path - with - | ex -> + with ex -> log.Error("Writing tags edit file: {Ex}", ex) [ CliIOError $"Error writing tags edit file: {ex.Message}" ] |> Error @@ -47,8 +46,7 @@ let writeValues (lines: string list) path = let readValues path = try File.ReadAllLines(path) |> List.ofArray |> Ok - with - | ex -> + with ex -> log.Error("Reading tags edit file: {Ex}", ex) [ CliIOError $"Error reading tags edit file: {ex.Message}" ] |> Error @@ -60,12 +58,9 @@ let editTagsWithEditor editorCommand path = let cleanup path = try - if File.Exists path then - File.Delete path - + if File.Exists path then File.Delete path Ok() - with - | ex -> + with ex -> log.Error("Cleanup tags edit file: {Ex}", ex) Error [ CliIOError $"Error deleting tags edit file: {ex.Message}" ] @@ -75,8 +70,8 @@ let applyValues (mkTag: string -> RoonTag) (ConsecutiveTracks tracks) (values: s try List.zip tracks values |> Ok - with - | :? System.ArgumentException -> [ TagsCountError ] |> Error + with :? System.ArgumentException -> + [ TagsCountError ] |> Error |> Result.bind ( List.traverseResultM applyTrack >> Result.mapError (fun err -> [ err ])