diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 383189c..12a2e96 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "fantomas": { - "version": "6.3.15", + "version": "7.0.3", "commands": [ "fantomas" ] @@ -15,4 +15,4 @@ ] } } -} \ No newline at end of file +} diff --git a/.envrc b/.envrc index 3550a30..e75d028 100644 --- a/.envrc +++ b/.envrc @@ -1 +1,23 @@ use flake +DOTNET_PATH=$(readlink "$(which dotnet)") +SETTINGS_FILE=$(find . -maxdepth 1 -type f -name '*.sln.DotSettings.user') +MSBUILD=$(realpath "$(find "$(dirname "$DOTNET_PATH")/../share/dotnet/sdk" -maxdepth 2 -type f -name MSBuild.dll)") +if [ -f "$SETTINGS_FILE" ] ; then + xmlstarlet ed --inplace \ + -N wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation" \ + -N x="http://schemas.microsoft.com/winfx/2006/xaml" \ + -N s="clr-namespace:System;assembly=mscorlib" \ + -N ss="urn:shemas-jetbrains-com:settings-storage-xaml" \ + --update "//s:String[@x:Key='/Default/Environment/Hierarchy/Build/BuildTool/DotNetCliExePath/@EntryValue']" \ + --value "$(realpath "$(dirname "$DOTNET_PATH")/../share/dotnet/dotnet")" \ + "$SETTINGS_FILE" + + xmlstarlet ed --inplace \ + -N wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation" \ + -N x="http://schemas.microsoft.com/winfx/2006/xaml" \ + -N s="clr-namespace:System;assembly=mscorlib" \ + -N ss="urn:shemas-jetbrains-com:settings-storage-xaml" \ + --update "//s:String[@x:Key='/Default/Environment/Hierarchy/Build/BuildTool/CustomBuildToolPath/@EntryValue']" \ + --value "$MSBUILD" \ + "$SETTINGS_FILE" +fi diff --git a/Plugins/ArgParser/WoofWare.Whippet.Plugin.ArgParser/WoofWare.Whippet.Plugin.ArgParser.Test/WoofWare.Whippet.Plugin.ArgParser.Test.fsproj b/Plugins/ArgParser/WoofWare.Whippet.Plugin.ArgParser/WoofWare.Whippet.Plugin.ArgParser.Test/WoofWare.Whippet.Plugin.ArgParser.Test.fsproj index c99a93c..3b9052e 100644 --- a/Plugins/ArgParser/WoofWare.Whippet.Plugin.ArgParser/WoofWare.Whippet.Plugin.ArgParser.Test/WoofWare.Whippet.Plugin.ArgParser.Test.fsproj +++ b/Plugins/ArgParser/WoofWare.Whippet.Plugin.ArgParser/WoofWare.Whippet.Plugin.ArgParser.Test/WoofWare.Whippet.Plugin.ArgParser.Test.fsproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 false true @@ -12,12 +12,12 @@ - - - - - - + + + + + + diff --git a/Plugins/HttpClient/WoofWare.Whippet.Plugin.HttpClient.Consumer/GeneratedRestClient.fs b/Plugins/HttpClient/WoofWare.Whippet.Plugin.HttpClient.Consumer/GeneratedRestClient.fs index 2d97f98..eb108de 100644 --- a/Plugins/HttpClient/WoofWare.Whippet.Plugin.HttpClient.Consumer/GeneratedRestClient.fs +++ b/Plugins/HttpClient/WoofWare.Whippet.Plugin.HttpClient.Consumer/GeneratedRestClient.fs @@ -153,8 +153,7 @@ module PureGymApi = | null -> System.Uri "https://whatnot.com/" | v -> v), System.Uri ( - "v1/gyms/{gym}" - .Replace ("{gym}", gym.ToString () |> System.Uri.EscapeDataString), + "v1/gyms/{gym}".Replace ("{gym}", gym.ToString () |> System.Uri.EscapeDataString), System.UriKind.Relative ) ) diff --git a/Plugins/HttpClient/WoofWare.Whippet.Plugin.HttpClient/WoofWare.Whippet.Plugin.HttpClient.Test/WoofWare.Whippet.Plugin.HttpClient.Test.fsproj b/Plugins/HttpClient/WoofWare.Whippet.Plugin.HttpClient/WoofWare.Whippet.Plugin.HttpClient.Test/WoofWare.Whippet.Plugin.HttpClient.Test.fsproj index 8bcfe3b..3c62ea6 100644 --- a/Plugins/HttpClient/WoofWare.Whippet.Plugin.HttpClient/WoofWare.Whippet.Plugin.HttpClient.Test/WoofWare.Whippet.Plugin.HttpClient.Test.fsproj +++ b/Plugins/HttpClient/WoofWare.Whippet.Plugin.HttpClient/WoofWare.Whippet.Plugin.HttpClient.Test/WoofWare.Whippet.Plugin.HttpClient.Test.fsproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 false true @@ -22,11 +22,11 @@ - - - - - + + + + + diff --git a/Plugins/InterfaceMock/WoofWare.Whippet.Plugin.InterfaceMock/WoofWare.Whippet.Plugin.InterfaceMock.Test/WoofWare.Whippet.Plugin.InterfaceMock.Test.fsproj b/Plugins/InterfaceMock/WoofWare.Whippet.Plugin.InterfaceMock/WoofWare.Whippet.Plugin.InterfaceMock.Test/WoofWare.Whippet.Plugin.InterfaceMock.Test.fsproj index 309d41d..0655491 100644 --- a/Plugins/InterfaceMock/WoofWare.Whippet.Plugin.InterfaceMock/WoofWare.Whippet.Plugin.InterfaceMock.Test/WoofWare.Whippet.Plugin.InterfaceMock.Test.fsproj +++ b/Plugins/InterfaceMock/WoofWare.Whippet.Plugin.InterfaceMock/WoofWare.Whippet.Plugin.InterfaceMock.Test/WoofWare.Whippet.Plugin.InterfaceMock.Test.fsproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 false true @@ -14,11 +14,11 @@ - - - - - + + + + + diff --git a/Plugins/Json/WoofWare.Whippet.Plugin.Json/JsonParseGenerator.fs b/Plugins/Json/WoofWare.Whippet.Plugin.Json/JsonParseGenerator.fs index a10b0ef..232886f 100644 --- a/Plugins/Json/WoofWare.Whippet.Plugin.Json/JsonParseGenerator.fs +++ b/Plugins/Json/WoofWare.Whippet.Plugin.Json/JsonParseGenerator.fs @@ -352,10 +352,7 @@ module JsonParseGenerator = let getParseOptions (fieldAttrs : SynAttribute list) = (JsonParseOption.None, fieldAttrs) ||> List.fold (fun options attr -> - if - (SynLongIdent.toString attr.TypeName) - .EndsWith ("JsonNumberHandling", StringComparison.Ordinal) - then + if (SynLongIdent.toString attr.TypeName).EndsWith ("JsonNumberHandling", StringComparison.Ordinal) then let qualifiedEnumValue = match SynExpr.stripOptionalParen attr.ArgExpr with | SynExpr.LongIdent (_, SynLongIdent (ident, _, _), _, _) when isJsonNumberHandling ident -> @@ -385,15 +382,13 @@ module JsonParseGenerator = let propertyNameAttr = fieldData.Attrs |> List.tryFind (fun attr -> - (SynLongIdent.toString attr.TypeName) - .EndsWith ("JsonPropertyName", StringComparison.Ordinal) + (SynLongIdent.toString attr.TypeName).EndsWith ("JsonPropertyName", StringComparison.Ordinal) ) let extensionDataAttr = fieldData.Attrs |> List.tryFind (fun attr -> - (SynLongIdent.toString attr.TypeName) - .EndsWith ("JsonExtensionData", StringComparison.Ordinal) + (SynLongIdent.toString attr.TypeName).EndsWith ("JsonExtensionData", StringComparison.Ordinal) ) let propertyName = diff --git a/Plugins/Json/WoofWare.Whippet.Plugin.Json/JsonSerializeGenerator.fs b/Plugins/Json/WoofWare.Whippet.Plugin.Json/JsonSerializeGenerator.fs index 0029a3d..82803d5 100644 --- a/Plugins/Json/WoofWare.Whippet.Plugin.Json/JsonSerializeGenerator.fs +++ b/Plugins/Json/WoofWare.Whippet.Plugin.Json/JsonSerializeGenerator.fs @@ -181,8 +181,7 @@ module JsonSerializeGenerator = let propertyNameAttr = attrs |> List.tryFind (fun attr -> - (SynLongIdent.toString attr.TypeName) - .EndsWith ("JsonPropertyName", StringComparison.Ordinal) + (SynLongIdent.toString attr.TypeName).EndsWith ("JsonPropertyName", StringComparison.Ordinal) ) match propertyNameAttr with @@ -199,8 +198,7 @@ module JsonSerializeGenerator = let getIsJsonExtension (attrs : SynAttribute list) : bool = attrs |> List.tryFind (fun attr -> - (SynLongIdent.toString attr.TypeName) - .EndsWith ("JsonExtensionData", StringComparison.Ordinal) + (SynLongIdent.toString attr.TypeName).EndsWith ("JsonExtensionData", StringComparison.Ordinal) ) |> Option.isSome diff --git a/Plugins/Json/WoofWare.Whippet.Plugin.Json/WoofWare.Whippet.Plugin.Json.Test/TestJsonSerde.fs b/Plugins/Json/WoofWare.Whippet.Plugin.Json/WoofWare.Whippet.Plugin.Json.Test/TestJsonSerde.fs index 2127649..1245c10 100644 --- a/Plugins/Json/WoofWare.Whippet.Plugin.Json/WoofWare.Whippet.Plugin.Json.Test/TestJsonSerde.fs +++ b/Plugins/Json/WoofWare.Whippet.Plugin.Json/WoofWare.Whippet.Plugin.Json.Test/TestJsonSerde.fs @@ -3,7 +3,7 @@ namespace WoofWare.Whippet.Plugin.Json.Test open System open System.Collections.Generic open System.Text.Json.Nodes -open FsCheck.Random +open FsCheck.FSharp open Microsoft.FSharp.Reflection open NUnit.Framework open FsCheck @@ -15,21 +15,21 @@ module TestJsonSerde = let uriGen : Gen = gen { - let! suffix = Arb.generate + let! suffix = ArbMap.generate ArbMap.defaults return Uri $"https://example.com/%i{suffix}" } let rec innerGen (count : int) : Gen = gen { - let! guid = Arb.generate - let! mapKeys = Gen.listOf Arb.generate> + let! guid = ArbMap.generate ArbMap.defaults + let! mapKeys = Gen.listOf (ArbMap.generate> ArbMap.defaults) let mapKeys = mapKeys |> List.map _.Get |> List.distinct let! mapValues = Gen.listOfLength mapKeys.Length uriGen let map = List.zip mapKeys mapValues |> Map.ofList let! concreteDictKeys = if count > 0 then - Gen.listOf Arb.generate> + Gen.listOf (ArbMap.generate> ArbMap.defaults) else Gen.constant [] @@ -50,13 +50,16 @@ module TestJsonSerde = |> List.map KeyValuePair |> Dictionary - let! readOnlyDictKeys = Gen.listOf Arb.generate> + let! readOnlyDictKeys = Gen.listOf (ArbMap.generate> ArbMap.defaults) let readOnlyDictKeys = readOnlyDictKeys |> List.map _.Get |> List.distinct - let! readOnlyDictValues = Gen.listOfLength readOnlyDictKeys.Length (Gen.listOf Arb.generate) + + let! readOnlyDictValues = + Gen.listOfLength readOnlyDictKeys.Length (Gen.listOf (ArbMap.generate ArbMap.defaults)) + let readOnlyDict = List.zip readOnlyDictKeys readOnlyDictValues |> readOnlyDict let! dictKeys = Gen.listOf uriGen - let! dictValues = Gen.listOfLength dictKeys.Length Arb.generate + let! dictValues = Gen.listOfLength dictKeys.Length (ArbMap.generate ArbMap.defaults) let dict = List.zip dictKeys dictValues |> dict return @@ -71,28 +74,38 @@ module TestJsonSerde = let outerGen : Gen = gen { - let! a = Arb.generate - let! b = Arb.generate> - let! c = Gen.listOf Arb.generate + let! a = ArbMap.generate ArbMap.defaults + let! b = ArbMap.generate> ArbMap.defaults + let! c = Gen.listOf (ArbMap.generate ArbMap.defaults) let! depth = Gen.choose (0, 2) let! d = innerGen depth - let! e = Gen.arrayOf Arb.generate> - let! arr = Gen.arrayOf Arb.generate - let! byte = Arb.generate - let! sbyte = Arb.generate - let! i = Arb.generate - let! i32 = Arb.generate - let! i64 = Arb.generate - let! u = Arb.generate - let! u32 = Arb.generate - let! u64 = Arb.generate - let! f = Arb.generate |> Gen.filter (fun s -> Double.IsFinite (s / 1.0)) - let! f32 = Arb.generate |> Gen.filter (fun s -> Single.IsFinite (s / 1.0f)) - let! single = Arb.generate |> Gen.filter (fun s -> Single.IsFinite (s / 1.0f)) - let! intMeasureOption = Arb.generate - let! intMeasureNullable = Arb.generate + let! e = Gen.arrayOf (ArbMap.generate> ArbMap.defaults) + let! arr = Gen.arrayOf (ArbMap.generate ArbMap.defaults) + let! byte = ArbMap.generate ArbMap.defaults + let! sbyte = ArbMap.generate ArbMap.defaults + let! i = ArbMap.generate ArbMap.defaults + let! i32 = ArbMap.generate ArbMap.defaults + let! i64 = ArbMap.generate ArbMap.defaults + let! u = ArbMap.generate ArbMap.defaults + let! u32 = ArbMap.generate ArbMap.defaults + let! u64 = ArbMap.generate ArbMap.defaults + + let! f = + ArbMap.generate ArbMap.defaults + |> Gen.filter (fun s -> Double.IsFinite (s / 1.0)) + + let! f32 = + ArbMap.generate ArbMap.defaults + |> Gen.filter (fun s -> Single.IsFinite (s / 1.0f)) + + let! single = + ArbMap.generate ArbMap.defaults + |> Gen.filter (fun s -> Single.IsFinite (s / 1.0f)) + + let! intMeasureOption = ArbMap.generate ArbMap.defaults + let! intMeasureNullable = ArbMap.generate ArbMap.defaults let! someEnum = Gen.choose (0, 1) - let! timestamp = Arb.generate + let! timestamp = ArbMap.generate ArbMap.defaults return { @@ -270,10 +283,10 @@ module TestJsonSerde = match case with | 0 -> return FirstDu.EmptyCase | 1 -> - let! s = Arb.generate> + let! s = ArbMap.generate> ArbMap.defaults return FirstDu.Case1 s.Get | 2 -> - let! i = Arb.generate + let! i = ArbMap.generate ArbMap.defaults let! record = outerGen return FirstDu.Case2 (record, i) | _ -> return failwith $"unexpected: %i{case}" @@ -293,7 +306,6 @@ module TestJsonSerde = [] let ``DU generator covers all cases`` () = - let rand = Random () let cases = FSharpType.GetUnionCases typeof let counts = Array.zeroCreate cases.Length @@ -302,10 +314,12 @@ module TestJsonSerde = let mutable i = 0 while i < 10_000 && Array.exists (fun i -> i = 0) counts do - let du = Gen.eval 10 (StdGen.StdGen (rand.Next (), rand.Next ())) duGen - let tag = decompose du - counts.[tag] <- counts.[tag] + 1 - i <- i + 1 + let du = Gen.sample 10 duGen + let tag = du |> Array.map decompose + + for tag in tag do + counts.[tag] <- counts.[tag] + 1 + i <- i + 1 for i in counts do i |> shouldBeGreaterThan 0 diff --git a/Plugins/Json/WoofWare.Whippet.Plugin.Json/WoofWare.Whippet.Plugin.Json.Test/WoofWare.Whippet.Plugin.Json.Test.fsproj b/Plugins/Json/WoofWare.Whippet.Plugin.Json/WoofWare.Whippet.Plugin.Json.Test/WoofWare.Whippet.Plugin.Json.Test.fsproj index 3442d47..bcebebc 100644 --- a/Plugins/Json/WoofWare.Whippet.Plugin.Json/WoofWare.Whippet.Plugin.Json.Test/WoofWare.Whippet.Plugin.Json.Test.fsproj +++ b/Plugins/Json/WoofWare.Whippet.Plugin.Json/WoofWare.Whippet.Plugin.Json.Test/WoofWare.Whippet.Plugin.Json.Test.fsproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 false true @@ -16,12 +16,12 @@ - - - - - - + + + + + + diff --git a/Plugins/Swagger/WoofWare.Whippet.Plugin.Swagger.Consumer/GeneratedSwaggerGiteaHttpClient.fs b/Plugins/Swagger/WoofWare.Whippet.Plugin.Swagger.Consumer/GeneratedSwaggerGiteaHttpClient.fs index fc99527..57574f3 100644 --- a/Plugins/Swagger/WoofWare.Whippet.Plugin.Swagger.Consumer/GeneratedSwaggerGiteaHttpClient.fs +++ b/Plugins/Swagger/WoofWare.Whippet.Plugin.Swagger.Consumer/GeneratedSwaggerGiteaHttpClient.fs @@ -291,8 +291,7 @@ module GiteaHttpClientExtension = System.Uri ("/api/v1/", System.UriKind.Relative) ), System.Uri ( - "admin/hooks/{id}" - .Replace ("{id}", id.ToString () |> System.Uri.EscapeDataString), + "admin/hooks/{id}".Replace ("{id}", id.ToString () |> System.Uri.EscapeDataString), System.UriKind.Relative ) ) @@ -336,8 +335,7 @@ module GiteaHttpClientExtension = System.Uri ("/api/v1/", System.UriKind.Relative) ), System.Uri ( - "admin/hooks/{id}" - .Replace ("{id}", id.ToString () |> System.Uri.EscapeDataString), + "admin/hooks/{id}".Replace ("{id}", id.ToString () |> System.Uri.EscapeDataString), System.UriKind.Relative ) ) @@ -977,8 +975,7 @@ module GiteaHttpClientExtension = System.Uri ("/api/v1/", System.UriKind.Relative) ), System.Uri ( - "amdin/hooks/{id}" - .Replace ("{id}", id.ToString () |> System.Uri.EscapeDataString), + "amdin/hooks/{id}".Replace ("{id}", id.ToString () |> System.Uri.EscapeDataString), System.UriKind.Relative ) ) @@ -1401,8 +1398,7 @@ module GiteaHttpClientExtension = System.Uri ("/api/v1/", System.UriKind.Relative) ), System.Uri ( - "org/{org}/repos" - .Replace ("{org}", org.ToString () |> System.Uri.EscapeDataString), + "org/{org}/repos".Replace ("{org}", org.ToString () |> System.Uri.EscapeDataString), System.UriKind.Relative ) ) @@ -1738,8 +1734,7 @@ module GiteaHttpClientExtension = System.Uri ("/api/v1/", System.UriKind.Relative) ), System.Uri ( - "orgs/{org}/hooks" - .Replace ("{org}", org.ToString () |> System.Uri.EscapeDataString), + "orgs/{org}/hooks".Replace ("{org}", org.ToString () |> System.Uri.EscapeDataString), System.UriKind.Relative ) ) @@ -2537,8 +2532,7 @@ module GiteaHttpClientExtension = System.Uri ("/api/v1/", System.UriKind.Relative) ), System.Uri ( - "orgs/{org}/repos" - .Replace ("{org}", org.ToString () |> System.Uri.EscapeDataString), + "orgs/{org}/repos".Replace ("{org}", org.ToString () |> System.Uri.EscapeDataString), System.UriKind.Relative ) ) @@ -2645,8 +2639,7 @@ module GiteaHttpClientExtension = System.Uri ("/api/v1/", System.UriKind.Relative) ), System.Uri ( - "orgs/{org}/teams" - .Replace ("{org}", org.ToString () |> System.Uri.EscapeDataString), + "orgs/{org}/teams".Replace ("{org}", org.ToString () |> System.Uri.EscapeDataString), System.UriKind.Relative ) ) @@ -12976,8 +12969,7 @@ module GiteaHttpClientExtension = System.Uri ("/api/v1/", System.UriKind.Relative) ), System.Uri ( - "repositories/{id}" - .Replace ("{id}", id.ToString () |> System.Uri.EscapeDataString), + "repositories/{id}".Replace ("{id}", id.ToString () |> System.Uri.EscapeDataString), System.UriKind.Relative ) ) @@ -13519,8 +13511,7 @@ module GiteaHttpClientExtension = System.Uri ("/api/v1/", System.UriKind.Relative) ), System.Uri ( - ("teams/{id}/repos" - .Replace ("{id}", id.ToString () |> System.Uri.EscapeDataString) + ("teams/{id}/repos".Replace ("{id}", id.ToString () |> System.Uri.EscapeDataString) + (if "teams/{id}/repos".IndexOf (char 63) >= 0 then "&" else @@ -14410,8 +14401,7 @@ module GiteaHttpClientExtension = System.Uri ("/api/v1/", System.UriKind.Relative) ), System.Uri ( - "user/gpg_keys/{id}" - .Replace ("{id}", id.ToString () |> System.Uri.EscapeDataString), + "user/gpg_keys/{id}".Replace ("{id}", id.ToString () |> System.Uri.EscapeDataString), System.UriKind.Relative ) ) diff --git a/Plugins/Swagger/WoofWare.Whippet.Plugin.Swagger/WoofWare.Whippet.Plugin.Swagger.Test/WoofWare.Whippet.Plugin.Swagger.Test.fsproj b/Plugins/Swagger/WoofWare.Whippet.Plugin.Swagger/WoofWare.Whippet.Plugin.Swagger.Test/WoofWare.Whippet.Plugin.Swagger.Test.fsproj index 8f8c28b..30becad 100644 --- a/Plugins/Swagger/WoofWare.Whippet.Plugin.Swagger/WoofWare.Whippet.Plugin.Swagger.Test/WoofWare.Whippet.Plugin.Swagger.Test.fsproj +++ b/Plugins/Swagger/WoofWare.Whippet.Plugin.Swagger/WoofWare.Whippet.Plugin.Swagger.Test/WoofWare.Whippet.Plugin.Swagger.Test.fsproj @@ -1,16 +1,16 @@ - net8.0 + net9.0 false true - - - - + + + + diff --git a/WoofWare.Whippet.App/Program.fs b/WoofWare.Whippet.App/Program.fs index a5fccae..444cd9d 100644 --- a/WoofWare.Whippet.App/Program.fs +++ b/WoofWare.Whippet.App/Program.fs @@ -6,6 +6,7 @@ open System.Reflection open Ionide.ProjInfo open Ionide.ProjInfo.Types +open WoofWare.DotnetRuntimeLocator open WoofWare.Whippet.Core type Args = @@ -156,7 +157,10 @@ module Program = ) let runtime = - DotnetRuntime.locate (Assembly.GetExecutingAssembly().Location |> FileInfo) + Assembly.GetExecutingAssembly().Location + |> DotnetRuntime.SelectForDll + |> Seq.map DirectoryInfo + |> Seq.toList let plugins = args.Plugins diff --git a/WoofWare.Whippet.App/RuntimeConfig.fs b/WoofWare.Whippet.App/RuntimeConfig.fs deleted file mode 100644 index 2fbdbfc..0000000 --- a/WoofWare.Whippet.App/RuntimeConfig.fs +++ /dev/null @@ -1,47 +0,0 @@ -namespace WoofWare.Whippet - -open System - -type FrameworkDescription = - { - Name : string - Version : string - } - -type RuntimeOptions = - { - Tfm : string - Framework : FrameworkDescription option - Frameworks : FrameworkDescription list option - RollForward : string option - } - -type RuntimeConfig = - { - RuntimeOptions : RuntimeOptions - } - -[] -type RollForward = - | Minor - | Major - | LatestPatch - | LatestMinor - | LatestMajor - | Disable - - static member Parse (s : string) : RollForward = - if s.Equals ("minor", StringComparison.OrdinalIgnoreCase) then - RollForward.Minor - elif s.Equals ("major", StringComparison.OrdinalIgnoreCase) then - RollForward.Major - elif s.Equals ("latestpatch", StringComparison.OrdinalIgnoreCase) then - RollForward.LatestPatch - elif s.Equals ("latestminor", StringComparison.OrdinalIgnoreCase) then - RollForward.LatestMinor - elif s.Equals ("latestmajor", StringComparison.OrdinalIgnoreCase) then - RollForward.LatestMajor - elif s.Equals ("disable", StringComparison.OrdinalIgnoreCase) then - RollForward.Disable - else - failwith $"Could not interpret '%s{s}' as a RollForward" diff --git a/WoofWare.Whippet.App/RuntimeConfigGen.fs b/WoofWare.Whippet.App/RuntimeConfigGen.fs deleted file mode 100644 index 047c288..0000000 --- a/WoofWare.Whippet.App/RuntimeConfigGen.fs +++ /dev/null @@ -1,103 +0,0 @@ -namespace WoofWare.Whippet - -(* File originally generated by Myriad. *) - -/// Module containing JSON parsing methods for the FrameworkDescription type -[] -module FrameworkDescription = - /// Parse from a JSON node. - let jsonParse (node : System.Text.Json.Nodes.JsonNode) : FrameworkDescription = - let arg_1 = - (match node.["version"] with - | null -> - raise ( - System.Collections.Generic.KeyNotFoundException ( - sprintf "Required key '%s' not found on JSON object" ("version") - ) - ) - | v -> v) - .AsValue() - .GetValue () - - let arg_0 = - (match node.["name"] with - | null -> - raise ( - System.Collections.Generic.KeyNotFoundException ( - sprintf "Required key '%s' not found on JSON object" ("name") - ) - ) - | v -> v) - .AsValue() - .GetValue () - - { - Name = arg_0 - Version = arg_1 - } -namespace WoofWare.Whippet - -/// Module containing JSON parsing methods for the RuntimeOptions type -[] -module RuntimeOptions = - /// Parse from a JSON node. - let jsonParse (node : System.Text.Json.Nodes.JsonNode) : RuntimeOptions = - let arg_3 = - match node.["rollForward"] with - | null -> None - | v -> v.AsValue().GetValue () |> Some - - let arg_2 = - match node.["frameworks"] with - | null -> None - | v -> - v.AsArray () - |> Seq.map (fun elt -> FrameworkDescription.jsonParse elt) - |> List.ofSeq - |> Some - - let arg_1 = - match node.["framework"] with - | null -> None - | v -> FrameworkDescription.jsonParse v |> Some - - let arg_0 = - (match node.["tfm"] with - | null -> - raise ( - System.Collections.Generic.KeyNotFoundException ( - sprintf "Required key '%s' not found on JSON object" ("tfm") - ) - ) - | v -> v) - .AsValue() - .GetValue () - - { - Tfm = arg_0 - Framework = arg_1 - Frameworks = arg_2 - RollForward = arg_3 - } -namespace WoofWare.Whippet - -/// Module containing JSON parsing methods for the RuntimeConfig type -[] -module RuntimeConfig = - /// Parse from a JSON node. - let jsonParse (node : System.Text.Json.Nodes.JsonNode) : RuntimeConfig = - let arg_0 = - RuntimeOptions.jsonParse ( - match node.["runtimeOptions"] with - | null -> - raise ( - System.Collections.Generic.KeyNotFoundException ( - sprintf "Required key '%s' not found on JSON object" ("runtimeOptions") - ) - ) - | v -> v - ) - - { - RuntimeOptions = arg_0 - } diff --git a/WoofWare.Whippet.App/RuntimeLocator.fs b/WoofWare.Whippet.App/RuntimeLocator.fs deleted file mode 100644 index 2b39cfd..0000000 --- a/WoofWare.Whippet.App/RuntimeLocator.fs +++ /dev/null @@ -1,104 +0,0 @@ -namespace WoofWare.Whippet - -open System -open System.IO -open WoofWare.DotnetRuntimeLocator - -/// Functions for locating .NET runtimes. -[] -module DotnetRuntime = - let private selectRuntime - (config : RuntimeOptions) - (f : DotnetEnvironmentInfo) - : Choice option - = - let rollForward = - match Environment.GetEnvironmentVariable "DOTNET_ROLL_FORWARD" with - | null -> - config.RollForward - |> Option.map RollForward.Parse - |> Option.defaultValue RollForward.Minor - | s -> RollForward.Parse s - - let desiredVersions = - match config.Framework with - | Some f -> [ Version f.Version, f.Name ] - | None -> - - match config.Frameworks with - | Some f -> f |> List.map (fun f -> Version f.Version, f.Name) - | None -> - failwith - "Could not deduce a framework version due to lack of either Framework or Frameworks in runtimeconfig" - - let compatiblyNamedRuntimes = - f.Frameworks - |> Seq.collect (fun availableFramework -> - desiredVersions - |> List.choose (fun (desiredVersion, desiredName) -> - if desiredName = availableFramework.Name then - Some - {| - Desired = desiredVersion - Name = desiredName - Installed = availableFramework - InstalledVersion = Version availableFramework.Version - |} - else - None - ) - ) - |> Seq.toList - - match rollForward with - | RollForward.Minor -> - let available = - compatiblyNamedRuntimes - |> Seq.filter (fun data -> - data.InstalledVersion.Major = data.Desired.Major - && data.InstalledVersion.Minor >= data.Desired.Minor - ) - |> Seq.groupBy (fun data -> data.Name) - |> Seq.map (fun (name, data) -> - let data = - data - |> Seq.minBy (fun data -> data.InstalledVersion.Minor, data.InstalledVersion.Build) - - name, data.Installed - ) - // TODO: how do we select between many available frameworks? - |> Seq.tryHead - - match available with - | Some (_, f) -> Some (Choice1Of2 f) - | None -> - // TODO: maybe we can ask the SDK. But we keep on trucking: maybe we're self-contained, - // and we'll actually find all the runtime next to the DLL. - None - | _ -> failwith "non-minor RollForward not supported yet; please shout if you want it" - - /// Given an executable DLL, locate the .NET runtime that can best run it. - let locate (dll : FileInfo) : DirectoryInfo list = - let runtimeConfig = - let name = - if not (dll.Name.EndsWith (".dll", StringComparison.OrdinalIgnoreCase)) then - failwith $"Expected DLL %s{dll.FullName} to end in .dll" - - dll.Name.Substring (0, dll.Name.Length - 4) - - Path.Combine (dll.Directory.FullName, $"%s{name}.runtimeconfig.json") - |> File.ReadAllText - |> System.Text.Json.Nodes.JsonNode.Parse - |> RuntimeConfig.jsonParse - |> fun f -> f.RuntimeOptions - - let availableRuntimes = DotnetEnvironmentInfo.Get () - - let runtime = selectRuntime runtimeConfig availableRuntimes - - match runtime with - | None -> - // Keep on trucking: let's be optimistic and hope that we're self-contained. - [ dll.Directory ] - | Some (Choice1Of2 runtime) -> [ dll.Directory ; DirectoryInfo $"%s{runtime.Path}/%s{runtime.Version}" ] - | Some (Choice2Of2 sdk) -> [ dll.Directory ; DirectoryInfo sdk.Path ] diff --git a/WoofWare.Whippet.App/WoofWare.Whippet.App.fsproj b/WoofWare.Whippet.App/WoofWare.Whippet.App.fsproj index 2e07fa4..6a1f54f 100644 --- a/WoofWare.Whippet.App/WoofWare.Whippet.App.fsproj +++ b/WoofWare.Whippet.App/WoofWare.Whippet.App.fsproj @@ -4,21 +4,19 @@ Exe net8.0 true + LatestMajor - - - - - - - + + + + diff --git a/WoofWare.Whippet.Fantomas.Test/WoofWare.Whippet.Fantomas.Test.fsproj b/WoofWare.Whippet.Fantomas.Test/WoofWare.Whippet.Fantomas.Test.fsproj index 9743464..70ca8e6 100644 --- a/WoofWare.Whippet.Fantomas.Test/WoofWare.Whippet.Fantomas.Test.fsproj +++ b/WoofWare.Whippet.Fantomas.Test/WoofWare.Whippet.Fantomas.Test.fsproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 false true @@ -13,11 +13,11 @@ - + - - - + + + diff --git a/WoofWare.Whippet.Test/WoofWare.Whippet.Test.fsproj b/WoofWare.Whippet.Test/WoofWare.Whippet.Test.fsproj index 751b43a..52317ec 100644 --- a/WoofWare.Whippet.Test/WoofWare.Whippet.Test.fsproj +++ b/WoofWare.Whippet.Test/WoofWare.Whippet.Test.fsproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 false true @@ -12,11 +12,11 @@ - - - - - + + + + + diff --git a/flake.lock b/flake.lock index b65d9db..1f9f01d 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1742456341, - "narHash": "sha256-yvdnTnROddjHxoQqrakUQWDZSzVchczfsuuMOxg476c=", + "lastModified": 1757967192, + "narHash": "sha256-/aA9A/OBmnuOMgwfzdsXRusqzUpd8rQnQY8jtrHK+To=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7344a3b78128f7b1765dba89060b015fb75431a7", + "rev": "0d7c15863b251a7a50265e57c1dca1a7add2e291", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index e8f7b6b..3a9fc2a 100644 --- a/flake.nix +++ b/flake.nix @@ -14,8 +14,8 @@ flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; pname = "WoofWare.Whippet"; - dotnet-sdk = pkgs.dotnet-sdk_8; - dotnet-runtime = pkgs.dotnetCorePackages.runtime_8_0; + dotnet-sdk = pkgs.dotnetCorePackages.sdk_9_0; + dotnet-runtime = pkgs.dotnetCorePackages.runtime_9_0; version = "0.1"; dotnetTool = dllOverride: toolName: toolVersion: hash: pkgs.stdenvNoCC.mkDerivation rec { @@ -26,33 +26,37 @@ pname = name; version = version; hash = hash; - installPhase = ''mkdir -p $out/bin && cp -r tools/net6.0/any/* $out/bin''; + installPhase = ''mkdir -p $out/bin && cp -r tools/net*/any/* $out/bin''; }; installPhase = let dll = if isNull dllOverride then name else dllOverride; - in '' - runHook preInstall - mkdir -p "$out/lib" - cp -r ./bin/* "$out/lib" - makeWrapper "${dotnet-runtime}/bin/dotnet" "$out/bin/${name}" --add-flags "$out/lib/${dll}.dll" - runHook postInstall - ''; + in + # fsharp-analyzers requires the .NET SDK at runtime, so we use that instead of dotnet-runtime. + '' + runHook preInstall + mkdir -p "$out/lib" + cp -r ./bin/* "$out/lib" + makeWrapper "${dotnet-sdk}/bin/dotnet" "$out/bin/${name}" --set DOTNET_HOST_PATH "${dotnet-sdk}/bin/dotnet" --add-flags "$out/lib/${dll}.dll" + runHook postInstall + ''; }; in { - packages = { - fantomas = dotnetTool null "fantomas" (builtins.fromJSON (builtins.readFile ./.config/dotnet-tools.json)).tools.fantomas.version (builtins.head (builtins.filter (elem: elem.pname == "fantomas") ((import ./nix/deps.nix) {fetchNuGet = x: x;}))).hash; - fsharp-analyzers = dotnetTool "FSharp.Analyzers.Cli" "fsharp-analyzers" (builtins.fromJSON (builtins.readFile ./.config/dotnet-tools.json)).tools.fsharp-analyzers.version (builtins.head (builtins.filter (elem: elem.pname == "fsharp-analyzers") ((import ./nix/deps.nix) {fetchNuGet = x: x;}))).hash; + packages = let + deps = builtins.fromJSON (builtins.readFile ./nix/deps.json); + in { + fantomas = dotnetTool null "fantomas" (builtins.fromJSON (builtins.readFile ./.config/dotnet-tools.json)).tools.fantomas.version (builtins.head (builtins.filter (elem: elem.pname == "fantomas") deps)).hash; + fsharp-analyzers = dotnetTool "FSharp.Analyzers.Cli" "fsharp-analyzers" (builtins.fromJSON (builtins.readFile ./.config/dotnet-tools.json)).tools.fsharp-analyzers.version (builtins.head (builtins.filter (elem: elem.pname == "fsharp-analyzers") deps)).hash; default = pkgs.buildDotnetModule { inherit pname version dotnet-sdk dotnet-runtime; name = "WoofWare.Whippet"; src = ./.; - projectFile = "./WoofWare.Whippet/WoofWare.Whippet.fsproj"; + projectFile = "./WoofWare.Whippet/WoofWare.Whippet.csproj"; testProjectFile = "./WoofWare.Whippet.Test/WoofWare.Whippet.Test.fsproj"; disabledTests = ["WoofWare.Whippet.Test.TestSurface.CheckVersionAgainstRemote"]; - nugetDeps = ./nix/deps.nix; # `nix build .#default.passthru.fetch-deps && ./result nix/deps.nix` + nugetDeps = ./nix/deps.json; # `nix build .#default.fetch-deps && ./result nix/deps.json` doCheck = true; }; }; @@ -62,6 +66,7 @@ pkgs.alejandra pkgs.nodePackages.markdown-link-check pkgs.shellcheck + pkgs.xmlstarlet ]; }; }); diff --git a/nix/deps.json b/nix/deps.json new file mode 100644 index 0000000..66772de --- /dev/null +++ b/nix/deps.json @@ -0,0 +1,322 @@ +[ + { + "pname": "ApiSurface", + "version": "5.0.1", + "hash": "sha256-0GMXEMFgWbbE2OGxW+6h4zGgQHg+IZy1aI13Dn97xSU=" + }, + { + "pname": "fantomas", + "version": "7.0.3", + "hash": "sha256-0XlfV7SxXPDnk/CjkUesJSaH0cxlNHJ+Jj86zNUhkNA=" + }, + { + "pname": "fsharp-analyzers", + "version": "0.27.0", + "hash": "sha256-QhLi2veTY1wZlQKJLTyVPgx/ImkaZugQNjSN5VJCNEA=" + }, + { + "pname": "FSharp.Core", + "version": "4.3.4", + "hash": "sha256-styyo+6mJy+yxE0NZG/b1hxkAjPOnJfMgd9zWzCJ5uk=" + }, + { + "pname": "FSharp.Core", + "version": "6.0.0", + "hash": "sha256-aQDRgiGC7iTyzNEmvyd2RBCDcLG0I1dbfncHlkbeUMI=" + }, + { + "pname": "FSharp.Core", + "version": "9.0.303", + "hash": "sha256-AxR6wqodeU23KOTgkUfIgbavgbcSuzD4UBP+tiFydgA=" + }, + { + "pname": "FsUnit", + "version": "7.1.1", + "hash": "sha256-UMCEGKxQ4ytjmPuVpiNaAPbi3RQH9gqa61JJIUS/6hg=" + }, + { + "pname": "Ionide.ProjInfo", + "version": "0.71.2", + "hash": "sha256-mQM7nVZL/rwFKlt+esfygistjilIDfySMnZmHS5IFv0=" + }, + { + "pname": "Microsoft.ApplicationInsights", + "version": "2.23.0", + "hash": "sha256-5sf3bg7CZZjHseK+F3foOchEhmVeioePxMZVvS6Rjb0=" + }, + { + "pname": "Microsoft.AspNetCore.App.Ref", + "version": "8.0.20", + "hash": "sha256-A6300qL9iP7iuY4wF9QkmOcuvoJFB0H64BAM5oGZF/4=" + }, + { + "pname": "Microsoft.AspNetCore.App.Runtime.linux-arm64", + "version": "8.0.20", + "hash": "sha256-0nex3AN8BVoda2LgDGLWh0leL1/7rBV8skXr37crYPI=" + }, + { + "pname": "Microsoft.AspNetCore.App.Runtime.linux-x64", + "version": "8.0.20", + "hash": "sha256-rToqTSs66gvIi2I69+0/qjhKAXk5/rRQUh0KetP3ZxE=" + }, + { + "pname": "Microsoft.AspNetCore.App.Runtime.osx-arm64", + "version": "8.0.20", + "hash": "sha256-9Z/RcY2hwVb4W+sJaruvQIPlyb9Xqkgcv6t0GSQRmDE=" + }, + { + "pname": "Microsoft.AspNetCore.App.Runtime.osx-x64", + "version": "8.0.20", + "hash": "sha256-7g/PKgz5M30BqIpHoY4r5KjAmst/eeMze+Ksy0HH0I0=" + }, + { + "pname": "Microsoft.Build.Framework", + "version": "17.14.8", + "hash": "sha256-VKWENkxaP2A1ARdwGzbTPw+yTzP5WJwSZtmqszYLh7s=" + }, + { + "pname": "Microsoft.CodeCoverage", + "version": "17.14.1", + "hash": "sha256-f8QytG8GvRoP47rO2KEmnDLxIpyesaq26TFjDdW40Gs=" + }, + { + "pname": "Microsoft.NET.Test.Sdk", + "version": "17.14.1", + "hash": "sha256-mZUzDFvFp7x1nKrcnRd0hhbNu5g8EQYt8SKnRgdhT/A=" + }, + { + "pname": "Microsoft.NETCore.App.Host.linux-arm64", + "version": "8.0.20", + "hash": "sha256-N0zuC748wi+Offfe7ryhnwqUgYzXhYFhG0LgNktJolY=" + }, + { + "pname": "Microsoft.NETCore.App.Host.linux-x64", + "version": "8.0.20", + "hash": "sha256-NlwDtSJmxP+9oIqWEMKU12o96g9TzQAEt//votxI2PU=" + }, + { + "pname": "Microsoft.NETCore.App.Host.osx-arm64", + "version": "8.0.20", + "hash": "sha256-s8XRSsezmdxSo3QSyMTp9ixgY9Mi6hUiWH3i7wjIbzA=" + }, + { + "pname": "Microsoft.NETCore.App.Host.osx-x64", + "version": "8.0.20", + "hash": "sha256-gRMhTwxva9zSCahzCwWNzRsLhtXtPXuBi72TeSaZ8Uw=" + }, + { + "pname": "Microsoft.NETCore.App.Ref", + "version": "8.0.20", + "hash": "sha256-1YXXJaiMZOIbLduuWyFGSWt6hOxKa3URNsPDfiMrnDM=" + }, + { + "pname": "Microsoft.NETCore.App.Runtime.linux-arm64", + "version": "8.0.20", + "hash": "sha256-mWM6g5K63sGC/LevPeV1plNQBUgNpHeKZ9mz98ywo8M=" + }, + { + "pname": "Microsoft.NETCore.App.Runtime.linux-x64", + "version": "8.0.20", + "hash": "sha256-BkV2ZjBpQvLhijWFSwWDpr5m2ffNlCtYJA5TUTro6no=" + }, + { + "pname": "Microsoft.NETCore.App.Runtime.osx-arm64", + "version": "8.0.20", + "hash": "sha256-FrM1AKX+OZIJG7q2SlKq1n9N4sVvqMBNoXRNanB9AI4=" + }, + { + "pname": "Microsoft.NETCore.App.Runtime.osx-x64", + "version": "8.0.20", + "hash": "sha256-HbyucVCFDD3uqVn5XoONKoZBn0TWT2FUw1fOhkkUS+E=" + }, + { + "pname": "Microsoft.NETCore.Platforms", + "version": "1.1.0", + "hash": "sha256-FeM40ktcObQJk4nMYShB61H/E8B7tIKfl9ObJ0IOcCM=" + }, + { + "pname": "Microsoft.NETCore.Platforms", + "version": "5.0.0", + "hash": "sha256-LIcg1StDcQLPOABp4JRXIs837d7z0ia6+++3SF3jl1c=" + }, + { + "pname": "Microsoft.Testing.Extensions.Telemetry", + "version": "1.7.3", + "hash": "sha256-Z6WsY2FCUbNnT5HJd7IOrfOvqknVXp6PWzTVeb0idVg=" + }, + { + "pname": "Microsoft.Testing.Extensions.TrxReport.Abstractions", + "version": "1.7.3", + "hash": "sha256-PTee04FHyTHx/gF5NLckXuVje807G51MzkPrZ1gkgCw=" + }, + { + "pname": "Microsoft.Testing.Extensions.VSTestBridge", + "version": "1.7.3", + "hash": "sha256-8d+wZmucfSO7PsviHjVxYB4q6NcjgxvnCUpLePq35sM=" + }, + { + "pname": "Microsoft.Testing.Platform", + "version": "1.7.3", + "hash": "sha256-cavX11P5o9rooqC3ZHw5h002OKRg2ZNR/VaRwpNTQYA=" + }, + { + "pname": "Microsoft.Testing.Platform.MSBuild", + "version": "1.7.3", + "hash": "sha256-cREl529UQ/c5atT8KimMgrgNdy6MrAd0sBGT8sXRRPM=" + }, + { + "pname": "Microsoft.TestPlatform.AdapterUtilities", + "version": "17.13.0", + "hash": "sha256-Vr+3Tad/h/nk7f/5HMExn3HvCGFCarehFAzJSfCBaOc=" + }, + { + "pname": "Microsoft.TestPlatform.ObjectModel", + "version": "17.13.0", + "hash": "sha256-6S0fjfj8vA+h6dJVNwLi6oZhYDO/I/6hBZaq2VTW+Uk=" + }, + { + "pname": "Microsoft.TestPlatform.ObjectModel", + "version": "17.14.1", + "hash": "sha256-QMf6O+w0IT+16Mrzo7wn+N20f3L1/mDhs/qjmEo1rYs=" + }, + { + "pname": "Microsoft.TestPlatform.TestHost", + "version": "17.14.1", + "hash": "sha256-1cxHWcvHRD7orQ3EEEPPxVGEkTpxom1/zoICC9SInJs=" + }, + { + "pname": "Microsoft.VisualStudio.SolutionPersistence", + "version": "1.0.28", + "hash": "sha256-7BmeidGDb19wfvpaYA91luCFE1CStb8iLlnyJhVCJ6w=" + }, + { + "pname": "Microsoft.Win32.Registry", + "version": "5.0.0", + "hash": "sha256-9kylPGfKZc58yFqNKa77stomcoNnMeERXozWJzDcUIA=" + }, + { + "pname": "Nerdbank.GitVersioning", + "version": "3.8.38-alpha", + "hash": "sha256-gPMrVbjOZxXoofczF/pn6eVkLhjVSJIyQrLO2oljrDc=" + }, + { + "pname": "NETStandard.Library", + "version": "2.0.3", + "hash": "sha256-Prh2RPebz/s8AzHb2sPHg3Jl8s31inv9k+Qxd293ybo=" + }, + { + "pname": "Newtonsoft.Json", + "version": "13.0.3", + "hash": "sha256-hy/BieY4qxBWVVsDqqOPaLy1QobiIapkbrESm6v2PHc=" + }, + { + "pname": "NuGet.Common", + "version": "6.14.0", + "hash": "sha256-jDOwt3veI1GSG8CfBnf2+dJxD3E/Nmlc+vHtD4J76Ms=" + }, + { + "pname": "NuGet.Configuration", + "version": "6.14.0", + "hash": "sha256-1PN9s6fhCw3wd2260U6hQ4vG3jIvcG8GIn1oQgxMXA0=" + }, + { + "pname": "NuGet.Frameworks", + "version": "6.14.0", + "hash": "sha256-3ViM3R1ucQMEL2hQYsivT86kI6veMQK2xDsiAcFcVQk=" + }, + { + "pname": "NuGet.Packaging", + "version": "6.14.0", + "hash": "sha256-Yafbnxs3maj55bJ1oKQiZ0QkntFUzXdhorL94YEUOhY=" + }, + { + "pname": "NuGet.Protocol", + "version": "6.14.0", + "hash": "sha256-uLDKfs+QN1MdnuQtTES8qfNzzsmYKM6XB9pwJc4G+eo=" + }, + { + "pname": "NuGet.Versioning", + "version": "6.14.0", + "hash": "sha256-DqdOJgsphKxSvqB8b60zNPCaiLfbiu3WnUJ/90feLrY=" + }, + { + "pname": "NUnit", + "version": "4.4.0", + "hash": "sha256-5geF5QOF+X/WkuCEgkPVKH4AdKx4U0olpU07S8+G3nU=" + }, + { + "pname": "NUnit3TestAdapter", + "version": "5.1.0", + "hash": "sha256-5z470sFjV67wGHaw8KfmSloIAYe81Dokp0f8I6zXsDc=" + }, + { + "pname": "SemanticVersioning", + "version": "2.0.2", + "hash": "sha256-d5tUJshDHk/rhNqt7Rl9S/Fg526el1faeanNHKcqtAg=" + }, + { + "pname": "System.Collections.Immutable", + "version": "8.0.0", + "hash": "sha256-F7OVjKNwpqbUh8lTidbqJWYi476nsq9n+6k0+QVRo3w=" + }, + { + "pname": "System.Diagnostics.DiagnosticSource", + "version": "5.0.0", + "hash": "sha256-6mW3N6FvcdNH/pB58pl+pFSCGWgyaP4hfVtC/SMWDV4=" + }, + { + "pname": "System.Diagnostics.DiagnosticSource", + "version": "9.0.0", + "hash": "sha256-1VzO9i8Uq2KlTw1wnCCrEdABPZuB2JBD5gBsMTFTSvE=" + }, + { + "pname": "System.Formats.Asn1", + "version": "6.0.0", + "hash": "sha256-KaMHgIRBF7Nf3VwOo+gJS1DcD+41cJDPWFh+TDQ8ee8=" + }, + { + "pname": "System.Memory", + "version": "4.6.0", + "hash": "sha256-OhAEKzUM6eEaH99DcGaMz2pFLG/q/N4KVWqqiBYUOFo=" + }, + { + "pname": "System.Reflection.Metadata", + "version": "8.0.0", + "hash": "sha256-dQGC30JauIDWNWXMrSNOJncVa1umR1sijazYwUDdSIE=" + }, + { + "pname": "System.Runtime.CompilerServices.Unsafe", + "version": "6.1.0", + "hash": "sha256-NyqqpRcHumzSxpsgRDguD5SGwdUNHBbo0OOdzLTIzCU=" + }, + { + "pname": "System.Security.AccessControl", + "version": "5.0.0", + "hash": "sha256-ueSG+Yn82evxyGBnE49N4D+ngODDXgornlBtQ3Omw54=" + }, + { + "pname": "System.Security.Cryptography.Pkcs", + "version": "6.0.4", + "hash": "sha256-2e0aRybote+OR66bHaNiYpF//4fCiaO3zbR2e9GABUI=" + }, + { + "pname": "System.Security.Cryptography.ProtectedData", + "version": "4.4.0", + "hash": "sha256-Ri53QmFX8I8UH0x4PikQ1ZA07ZSnBUXStd5rBfGWFOE=" + }, + { + "pname": "System.Security.Principal.Windows", + "version": "5.0.0", + "hash": "sha256-CBOQwl9veFkrKK2oU8JFFEiKIh/p+aJO+q9Tc2Q/89Y=" + }, + { + "pname": "System.Text.Json", + "version": "8.0.5", + "hash": "sha256-yKxo54w5odWT6nPruUVsaX53oPRe+gKzGvLnnxtwP68=" + }, + { + "pname": "WoofWare.DotnetRuntimeLocator", + "version": "0.4.1", + "hash": "sha256-DtXTBLWSKa1AsBy9KO0N28KTum81fJSV7dOj8QqzLYg=" + } +] diff --git a/nix/deps.nix b/nix/deps.nix deleted file mode 100644 index fa38e65..0000000 --- a/nix/deps.nix +++ /dev/null @@ -1,569 +0,0 @@ -# This file was automatically generated by passthru.fetch-deps. -# Please dont edit it manually, your changes might get overwritten! -{fetchNuGet}: [ - (fetchNuGet { - pname = "ApiSurface"; - version = "4.1.5"; - hash = "sha256-Kbt18XLk1gvZfzGca885HaXZB119APay85KzI546PYM="; - }) - (fetchNuGet { - pname = "fantomas"; - version = "6.3.15"; - hash = "sha256-Gjw7MxjUNckMWSfnOye4UTe5fZWnor6RHCls3PNsuG8="; - }) - (fetchNuGet { - pname = "fsharp-analyzers"; - version = "0.27.0"; - hash = "sha256-QhLi2veTY1wZlQKJLTyVPgx/ImkaZugQNjSN5VJCNEA="; - }) - (fetchNuGet { - pname = "FSharp.Core"; - version = "4.3.4"; - hash = "sha256-styyo+6mJy+yxE0NZG/b1hxkAjPOnJfMgd9zWzCJ5uk="; - }) - (fetchNuGet { - pname = "FSharp.Core"; - version = "8.0.400"; - hash = "sha256-wlrcAjjvI5YtnHR7kFH8uRUA4GomJYmqr41K5LYjCGs="; - }) - (fetchNuGet { - pname = "FsUnit"; - version = "6.0.1"; - hash = "sha256-vka/aAgWhDCl5tu+kgO7GtSaHOOvlSaWxG+tExwGXpI="; - }) - (fetchNuGet { - pname = "Ionide.ProjInfo"; - version = "0.67.0"; - hash = "sha256-brgOnch4WuVe5TLx0RCa0wLDs3/Vu4HZP04YZyuAFYM="; - }) - (fetchNuGet { - pname = "Ionide.ProjInfo.Sln"; - version = "0.67.0"; - hash = "sha256-PyDq0Efv/vussW2Bgy+xl05SuyELH5NcYUMfSks4bT0="; - }) - (fetchNuGet { - pname = "Microsoft.Build"; - version = "17.2.0"; - hash = "sha256-JzPqbxFyotNhSr5tokVevdqB9+nJKx4YH2hPkC05GiY="; - }) - (fetchNuGet { - pname = "Microsoft.Build.Framework"; - version = "17.2.0"; - hash = "sha256-jG+p2tlyX5nWT4pcmgIC4M8LNruKLSZ2+I29S/ZI/yE="; - }) - (fetchNuGet { - pname = "Microsoft.CodeCoverage"; - version = "17.11.1"; - hash = "sha256-1dLlK3NGh88PuFYZiYpT+izA96etxhU3BSgixDgdtGA="; - }) - (fetchNuGet { - pname = "Microsoft.NET.StringTools"; - version = "1.0.0"; - hash = "sha256-smmwm1XbKsk0SPW74rd2uDubWzfd7RhfSkPr932cyhs="; - }) - (fetchNuGet { - pname = "Microsoft.NET.Test.Sdk"; - version = "17.11.1"; - hash = "sha256-0JUEucQ2lzaPgkrjm/NFLBTbqU1dfhvhN3Tl3moE6mI="; - }) - (fetchNuGet { - pname = "Microsoft.NETCore.Platforms"; - version = "1.0.1"; - hash = "sha256-mZotlGZqtrqDSoBrZhsxFe6fuOv5/BIo0w2Z2x0zVAU="; - }) - (fetchNuGet { - pname = "Microsoft.NETCore.Platforms"; - version = "1.1.0"; - hash = "sha256-FeM40ktcObQJk4nMYShB61H/E8B7tIKfl9ObJ0IOcCM="; - }) - (fetchNuGet { - pname = "Microsoft.NETCore.Platforms"; - version = "2.0.0"; - hash = "sha256-IEvBk6wUXSdyCnkj6tHahOJv290tVVT8tyemYcR0Yro="; - }) - (fetchNuGet { - pname = "Microsoft.NETCore.Platforms"; - version = "3.1.0"; - hash = "sha256-cnygditsEaU86bnYtIthNMymAHqaT/sf9Gjykhzqgb0="; - }) - (fetchNuGet { - pname = "Microsoft.NETCore.Targets"; - version = "1.0.1"; - hash = "sha256-lxxw/Gy32xHi0fLgFWNj4YTFBSBkjx5l6ucmbTyf7V4="; - }) - (fetchNuGet { - pname = "Microsoft.NETCore.Targets"; - version = "1.1.0"; - hash = "sha256-0AqQ2gMS8iNlYkrD+BxtIg7cXMnr9xZHtKAuN4bjfaQ="; - }) - (fetchNuGet { - pname = "Microsoft.TestPlatform.ObjectModel"; - version = "17.11.1"; - hash = "sha256-5vX+vCzFY3S7xfMVIv8OlMMFtdedW9UIJzc0WEc+vm4="; - }) - (fetchNuGet { - pname = "Microsoft.TestPlatform.TestHost"; - version = "17.11.1"; - hash = "sha256-wSkY0H1fQAq0H3LcKT4u7Y5RzhAAPa6yueVN84g8HxU="; - }) - (fetchNuGet { - pname = "Microsoft.Win32.Registry"; - version = "4.3.0"; - hash = "sha256-50XwFbyRfZkTD/bBn76WV/NIpOy/mzXD3MMEVFX/vr8="; - }) - (fetchNuGet { - pname = "Microsoft.Win32.SystemEvents"; - version = "4.7.0"; - hash = "sha256-GHxnD1Plb32GJWVWSv0Y51Kgtlb+cdKgOYVBYZSgVF4="; - }) - (fetchNuGet { - pname = "Nerdbank.GitVersioning"; - version = "3.6.143"; - hash = "sha256-OhOtMzP+2obDIR+npR7SsoXo0KrmcsL+VCE8Z3t5gzQ="; - }) - (fetchNuGet { - pname = "NETStandard.Library"; - version = "2.0.3"; - hash = "sha256-Prh2RPebz/s8AzHb2sPHg3Jl8s31inv9k+Qxd293ybo="; - }) - (fetchNuGet { - pname = "Newtonsoft.Json"; - version = "13.0.1"; - hash = "sha256-K2tSVW4n4beRPzPu3rlVaBEMdGvWSv/3Q1fxaDh4Mjo="; - }) - (fetchNuGet { - pname = "Newtonsoft.Json"; - version = "13.0.3"; - hash = "sha256-hy/BieY4qxBWVVsDqqOPaLy1QobiIapkbrESm6v2PHc="; - }) - (fetchNuGet { - pname = "NuGet.Common"; - version = "6.11.0"; - hash = "sha256-eb7G07RyZv4AQT6ItRqdBuUf9e9BXcQygsy5RNEXfNE="; - }) - (fetchNuGet { - pname = "NuGet.Configuration"; - version = "6.11.0"; - hash = "sha256-2SNZkX64SB15glzQx3k+vI7btr8Yqg4CayaaaK1B0AQ="; - }) - (fetchNuGet { - pname = "NuGet.Frameworks"; - version = "6.11.0"; - hash = "sha256-8DC7V2IlCjiMDQ9yWbl7QQHia6OpBrbWh5rL0qa0Opw="; - }) - (fetchNuGet { - pname = "NuGet.Frameworks"; - version = "6.11.1"; - hash = "sha256-p25Oa7wJjwF+2puIhBkZZkKSuk4jGq7xikYSCdfp9Vc="; - }) - (fetchNuGet { - pname = "NuGet.Packaging"; - version = "6.11.0"; - hash = "sha256-LVLvxcB6SMdayxAsrc5bCuLLt25fqPr6KfYcYoWWIQk="; - }) - (fetchNuGet { - pname = "NuGet.Protocol"; - version = "6.11.0"; - hash = "sha256-3vdB/8IiJ2LMHhFXLWOzf0H59Ow/zcoq6W4uCHbihCQ="; - }) - (fetchNuGet { - pname = "NuGet.Versioning"; - version = "6.11.0"; - hash = "sha256-03edgWvbqUtbzpBBTIxTwsSRoj1T2muGVL+vTuIHXag="; - }) - (fetchNuGet { - pname = "NUnit"; - version = "4.2.2"; - hash = "sha256-+0OS67ITalmG9arYCgQF/+YbmPRnB3pIIykew0kvoCc="; - }) - (fetchNuGet { - pname = "NUnit3TestAdapter"; - version = "4.6.0"; - hash = "sha256-9Yav2fYhC4w0OgsyUwU4/5rDy4FVDTpKnWHuwl/uKJQ="; - }) - (fetchNuGet { - pname = "runtime.any.System.Collections"; - version = "4.3.0"; - hash = "sha256-4PGZqyWhZ6/HCTF2KddDsbmTTjxs2oW79YfkberDZS8="; - }) - (fetchNuGet { - pname = "runtime.any.System.Globalization"; - version = "4.3.0"; - hash = "sha256-PaiITTFI2FfPylTEk7DwzfKeiA/g/aooSU1pDcdwWLU="; - }) - (fetchNuGet { - pname = "runtime.any.System.IO"; - version = "4.3.0"; - hash = "sha256-vej7ySRhyvM3pYh/ITMdC25ivSd0WLZAaIQbYj/6HVE="; - }) - (fetchNuGet { - pname = "runtime.any.System.Reflection"; - version = "4.3.0"; - hash = "sha256-ns6f++lSA+bi1xXgmW1JkWFb2NaMD+w+YNTfMvyAiQk="; - }) - (fetchNuGet { - pname = "runtime.any.System.Reflection.Primitives"; - version = "4.3.0"; - hash = "sha256-LkPXtiDQM3BcdYkAm5uSNOiz3uF4J45qpxn5aBiqNXQ="; - }) - (fetchNuGet { - pname = "runtime.any.System.Resources.ResourceManager"; - version = "4.3.0"; - hash = "sha256-9EvnmZslLgLLhJ00o5MWaPuJQlbUFcUF8itGQNVkcQ4="; - }) - (fetchNuGet { - pname = "runtime.any.System.Runtime"; - version = "4.3.0"; - hash = "sha256-qwhNXBaJ1DtDkuRacgHwnZmOZ1u9q7N8j0cWOLYOELM="; - }) - (fetchNuGet { - pname = "runtime.any.System.Runtime.Handles"; - version = "4.3.0"; - hash = "sha256-PQRACwnSUuxgVySO1840KvqCC9F8iI9iTzxNW0RcBS4="; - }) - (fetchNuGet { - pname = "runtime.any.System.Runtime.InteropServices"; - version = "4.3.0"; - hash = "sha256-Kaw5PnLYIiqWbsoF3VKJhy7pkpoGsUwn4ZDCKscbbzA="; - }) - (fetchNuGet { - pname = "runtime.any.System.Text.Encoding"; - version = "4.3.0"; - hash = "sha256-Q18B9q26MkWZx68exUfQT30+0PGmpFlDgaF0TnaIGCs="; - }) - (fetchNuGet { - pname = "runtime.any.System.Threading.Tasks"; - version = "4.3.0"; - hash = "sha256-agdOM0NXupfHbKAQzQT8XgbI9B8hVEh+a/2vqeHctg4="; - }) - (fetchNuGet { - pname = "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl"; - version = "4.3.0"; - hash = "sha256-LXUPLX3DJxsU1Pd3UwjO1PO9NM2elNEDXeu2Mu/vNps="; - }) - (fetchNuGet { - pname = "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl"; - version = "4.3.0"; - hash = "sha256-qeSqaUI80+lqw5MK4vMpmO0CZaqrmYktwp6L+vQAb0I="; - }) - (fetchNuGet { - pname = "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl"; - version = "4.3.0"; - hash = "sha256-SrHqT9wrCBsxILWtaJgGKd6Odmxm8/Mh7Kh0CUkZVzA="; - }) - (fetchNuGet { - pname = "runtime.native.System"; - version = "4.3.0"; - hash = "sha256-ZBZaodnjvLXATWpXXakFgcy6P+gjhshFXmglrL5xD5Y="; - }) - (fetchNuGet { - pname = "runtime.native.System.Security.Cryptography.OpenSsl"; - version = "4.3.0"; - hash = "sha256-Jy01KhtcCl2wjMpZWH+X3fhHcVn+SyllWFY8zWlz/6I="; - }) - (fetchNuGet { - pname = "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl"; - version = "4.3.0"; - hash = "sha256-wyv00gdlqf8ckxEdV7E+Ql9hJIoPcmYEuyeWb5Oz3mM="; - }) - (fetchNuGet { - pname = "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl"; - version = "4.3.0"; - hash = "sha256-zi+b4sCFrA9QBiSGDD7xPV27r3iHGlV99gpyVUjRmc4="; - }) - (fetchNuGet { - pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; - version = "4.3.0"; - hash = "sha256-gybQU6mPgaWV3rBG2dbH6tT3tBq8mgze3PROdsuWnX0="; - }) - (fetchNuGet { - pname = "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl"; - version = "4.3.0"; - hash = "sha256-VsP72GVveWnGUvS/vjOQLv1U80H2K8nZ4fDAmI61Hm4="; - }) - (fetchNuGet { - pname = "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; - version = "4.3.0"; - hash = "sha256-4yKGa/IrNCKuQ3zaDzILdNPD32bNdy6xr5gdJigyF5g="; - }) - (fetchNuGet { - pname = "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; - version = "4.3.0"; - hash = "sha256-HmdJhhRsiVoOOCcUvAwdjpMRiyuSwdcgEv2j9hxi+Zc="; - }) - (fetchNuGet { - pname = "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; - version = "4.3.0"; - hash = "sha256-pVFUKuPPIx0edQKjzRon3zKq8zhzHEzko/lc01V/jdw="; - }) - (fetchNuGet { - pname = "runtime.unix.System.Private.Uri"; - version = "4.3.0"; - hash = "sha256-c5tXWhE/fYbJVl9rXs0uHh3pTsg44YD1dJvyOA0WoMs="; - }) - (fetchNuGet { - pname = "runtime.unix.System.Runtime.Extensions"; - version = "4.3.0"; - hash = "sha256-l8S9gt6dk3qYG6HYonHtdlYtBKyPb29uQ6NDjmrt3V4="; - }) - (fetchNuGet { - pname = "SemanticVersioning"; - version = "2.0.2"; - hash = "sha256-d5tUJshDHk/rhNqt7Rl9S/Fg526el1faeanNHKcqtAg="; - }) - (fetchNuGet { - pname = "System.Collections"; - version = "4.0.11"; - hash = "sha256-puoFMkx4Z55C1XPxNw3np8nzNGjH+G24j43yTIsDRL0="; - }) - (fetchNuGet { - pname = "System.Collections"; - version = "4.3.0"; - hash = "sha256-afY7VUtD6w/5mYqrce8kQrvDIfS2GXDINDh73IjxJKc="; - }) - (fetchNuGet { - pname = "System.Collections.Immutable"; - version = "5.0.0"; - hash = "sha256-GdwSIjLMM0uVfE56VUSLVNgpW0B//oCeSFj8/hSlbM8="; - }) - (fetchNuGet { - pname = "System.Configuration.ConfigurationManager"; - version = "4.7.0"; - hash = "sha256-rYjp/UmagI4ZULU1ocia/AiXxLNL8uhMV8LBF4QFW10="; - }) - (fetchNuGet { - pname = "System.Drawing.Common"; - version = "4.7.0"; - hash = "sha256-D3qG+xAe78lZHvlco9gHK2TEAM370k09c6+SQi873Hk="; - }) - (fetchNuGet { - pname = "System.Formats.Asn1"; - version = "6.0.0"; - hash = "sha256-KaMHgIRBF7Nf3VwOo+gJS1DcD+41cJDPWFh+TDQ8ee8="; - }) - (fetchNuGet { - pname = "System.Globalization"; - version = "4.0.11"; - hash = "sha256-rbSgc2PIEc2c2rN6LK3qCREAX3DqA2Nq1WcLrZYsDBw="; - }) - (fetchNuGet { - pname = "System.Globalization"; - version = "4.3.0"; - hash = "sha256-caL0pRmFSEsaoeZeWN5BTQtGrAtaQPwFi8YOZPZG5rI="; - }) - (fetchNuGet { - pname = "System.IO"; - version = "4.1.0"; - hash = "sha256-V6oyQFwWb8NvGxAwvzWnhPxy9dKOfj/XBM3tEC5aHrw="; - }) - (fetchNuGet { - pname = "System.IO"; - version = "4.3.0"; - hash = "sha256-ruynQHekFP5wPrDiVyhNiRIXeZ/I9NpjK5pU+HPDiRY="; - }) - (fetchNuGet { - pname = "System.IO.Abstractions"; - version = "4.2.13"; - hash = "sha256-nkC/PiqE6+c1HJ2yTwg3x+qdBh844Z8n3ERWDW8k6Gg="; - }) - (fetchNuGet { - pname = "System.IO.FileSystem.AccessControl"; - version = "4.5.0"; - hash = "sha256-ck44YBQ0M+2Im5dw0VjBgFD1s0XuY54cujrodjjSBL8="; - }) - (fetchNuGet { - pname = "System.Memory"; - version = "4.5.4"; - hash = "sha256-3sCEfzO4gj5CYGctl9ZXQRRhwAraMQfse7yzKoRe65E="; - }) - (fetchNuGet { - pname = "System.Private.Uri"; - version = "4.3.0"; - hash = "sha256-fVfgcoP4AVN1E5wHZbKBIOPYZ/xBeSIdsNF+bdukIRM="; - }) - (fetchNuGet { - pname = "System.Reflection"; - version = "4.1.0"; - hash = "sha256-idZHGH2Yl/hha1CM4VzLhsaR8Ljo/rV7TYe7mwRJSMs="; - }) - (fetchNuGet { - pname = "System.Reflection"; - version = "4.3.0"; - hash = "sha256-NQSZRpZLvtPWDlvmMIdGxcVuyUnw92ZURo0hXsEshXY="; - }) - (fetchNuGet { - pname = "System.Reflection.Metadata"; - version = "1.6.0"; - hash = "sha256-JJfgaPav7UfEh4yRAQdGhLZF1brr0tUWPl6qmfNWq/E="; - }) - (fetchNuGet { - pname = "System.Reflection.Primitives"; - version = "4.0.1"; - hash = "sha256-SFSfpWEyCBMAOerrMCOiKnpT+UAWTvRcmoRquJR6Vq0="; - }) - (fetchNuGet { - pname = "System.Reflection.Primitives"; - version = "4.3.0"; - hash = "sha256-5ogwWB4vlQTl3jjk1xjniG2ozbFIjZTL9ug0usZQuBM="; - }) - (fetchNuGet { - pname = "System.Resources.ResourceManager"; - version = "4.0.1"; - hash = "sha256-cZ2/3/fczLjEpn6j3xkgQV9ouOVjy4Kisgw5xWw9kSw="; - }) - (fetchNuGet { - pname = "System.Resources.ResourceManager"; - version = "4.3.0"; - hash = "sha256-idiOD93xbbrbwwSnD4mORA9RYi/D/U48eRUsn/WnWGo="; - }) - (fetchNuGet { - pname = "System.Runtime"; - version = "4.1.0"; - hash = "sha256-FViNGM/4oWtlP6w0JC0vJU+k9efLKZ+yaXrnEeabDQo="; - }) - (fetchNuGet { - pname = "System.Runtime"; - version = "4.3.0"; - hash = "sha256-51813WXpBIsuA6fUtE5XaRQjcWdQ2/lmEokJt97u0Rg="; - }) - (fetchNuGet { - pname = "System.Runtime.CompilerServices.Unsafe"; - version = "5.0.0"; - hash = "sha256-neARSpLPUzPxEKhJRwoBzhPxK+cKIitLx7WBYncsYgo="; - }) - (fetchNuGet { - pname = "System.Runtime.CompilerServices.Unsafe"; - version = "6.0.0"; - hash = "sha256-bEG1PnDp7uKYz/OgLOWs3RWwQSVYm+AnPwVmAmcgp2I="; - }) - (fetchNuGet { - pname = "System.Runtime.Extensions"; - version = "4.1.0"; - hash = "sha256-X7DZ5CbPY7jHs20YZ7bmcXs9B5Mxptu/HnBUvUnNhGc="; - }) - (fetchNuGet { - pname = "System.Runtime.Extensions"; - version = "4.3.0"; - hash = "sha256-wLDHmozr84v1W2zYCWYxxj0FR0JDYHSVRaRuDm0bd/o="; - }) - (fetchNuGet { - pname = "System.Runtime.Handles"; - version = "4.0.1"; - hash = "sha256-j2QgVO9ZOjv7D1het98CoFpjoYgxjupuIhuBUmLLH7w="; - }) - (fetchNuGet { - pname = "System.Runtime.Handles"; - version = "4.3.0"; - hash = "sha256-KJ5aXoGpB56Y6+iepBkdpx/AfaJDAitx4vrkLqR7gms="; - }) - (fetchNuGet { - pname = "System.Runtime.InteropServices"; - version = "4.1.0"; - hash = "sha256-QceAYlJvkPRJc/+5jR+wQpNNI3aqGySWWSO30e/FfQY="; - }) - (fetchNuGet { - pname = "System.Runtime.InteropServices"; - version = "4.3.0"; - hash = "sha256-8sDH+WUJfCR+7e4nfpftj/+lstEiZixWUBueR2zmHgI="; - }) - (fetchNuGet { - pname = "System.Security.AccessControl"; - version = "4.5.0"; - hash = "sha256-AFsKPb/nTk2/mqH/PYpaoI8PLsiKKimaXf+7Mb5VfPM="; - }) - (fetchNuGet { - pname = "System.Security.AccessControl"; - version = "4.7.0"; - hash = "sha256-/9ZCPIHLdhzq7OW4UKqTsR0O93jjHd6BRG1SRwgHE1g="; - }) - (fetchNuGet { - pname = "System.Security.Cryptography.Pkcs"; - version = "6.0.4"; - hash = "sha256-2e0aRybote+OR66bHaNiYpF//4fCiaO3zbR2e9GABUI="; - }) - (fetchNuGet { - pname = "System.Security.Cryptography.ProtectedData"; - version = "4.4.0"; - hash = "sha256-Ri53QmFX8I8UH0x4PikQ1ZA07ZSnBUXStd5rBfGWFOE="; - }) - (fetchNuGet { - pname = "System.Security.Cryptography.ProtectedData"; - version = "4.7.0"; - hash = "sha256-dZfs5q3Ij1W1eJCfYjxI2o+41aSiFpaAugpoECaCOug="; - }) - (fetchNuGet { - pname = "System.Security.Permissions"; - version = "4.7.0"; - hash = "sha256-BGgXMLUi5rxVmmChjIhcXUxisJjvlNToXlyaIbUxw40="; - }) - (fetchNuGet { - pname = "System.Security.Principal.Windows"; - version = "4.5.0"; - hash = "sha256-BkUYNguz0e4NJp1kkW7aJBn3dyH9STwB5N8XqnlCsmY="; - }) - (fetchNuGet { - pname = "System.Security.Principal.Windows"; - version = "4.7.0"; - hash = "sha256-rWBM2U8Kq3rEdaa1MPZSYOOkbtMGgWyB8iPrpIqmpqg="; - }) - (fetchNuGet { - pname = "System.Text.Encoding"; - version = "4.0.11"; - hash = "sha256-PEailOvG05CVgPTyKLtpAgRydlSHmtd5K0Y8GSHY2Lc="; - }) - (fetchNuGet { - pname = "System.Text.Encoding"; - version = "4.3.0"; - hash = "sha256-GctHVGLZAa/rqkBNhsBGnsiWdKyv6VDubYpGkuOkBLg="; - }) - (fetchNuGet { - pname = "System.Text.Encoding.CodePages"; - version = "4.0.1"; - hash = "sha256-wxtwWQSTv5tuFP79KhUAhaL6bL4d8lSzSWkCn9aolwM="; - }) - (fetchNuGet { - pname = "System.Text.Encodings.Web"; - version = "6.0.0"; - hash = "sha256-UemDHGFoQIG7ObQwRluhVf6AgtQikfHEoPLC6gbFyRo="; - }) - (fetchNuGet { - pname = "System.Text.Encodings.Web"; - version = "7.0.0"; - hash = "sha256-tF8qt9GZh/nPy0mEnj6nKLG4Lldpoi/D8xM5lv2CoYQ="; - }) - (fetchNuGet { - pname = "System.Text.Json"; - version = "6.0.0"; - hash = "sha256-9AE/5ds4DqEfb0l+27fCBTSeYCdRWhxh2Bhg8IKvIuo="; - }) - (fetchNuGet { - pname = "System.Text.Json"; - version = "7.0.3"; - hash = "sha256-aSJZ17MjqaZNQkprfxm/09LaCoFtpdWmqU9BTROzWX4="; - }) - (fetchNuGet { - pname = "System.Threading"; - version = "4.0.11"; - hash = "sha256-mob1Zv3qLQhQ1/xOLXZmYqpniNUMCfn02n8ZkaAhqac="; - }) - (fetchNuGet { - pname = "System.Threading.Tasks"; - version = "4.0.11"; - hash = "sha256-5SLxzFg1df6bTm2t09xeI01wa5qQglqUwwJNlQPJIVs="; - }) - (fetchNuGet { - pname = "System.Threading.Tasks"; - version = "4.3.0"; - hash = "sha256-Z5rXfJ1EXp3G32IKZGiZ6koMjRu0n8C1NGrwpdIen4w="; - }) - (fetchNuGet { - pname = "System.Threading.Tasks.Dataflow"; - version = "6.0.0"; - hash = "sha256-bEx7t8jvo7HEkqexhyYyrgFojiMVYyd2nG2mHJv0m6w="; - }) - (fetchNuGet { - pname = "System.Windows.Extensions"; - version = "4.7.0"; - hash = "sha256-yW+GvQranReaqPw5ZFv+mSjByQ5y1pRLl05JIEf3tYU="; - }) -]