mirror of
https://github.com/Smaug123/gitea-repo-config
synced 2025-10-12 10:48:40 +00:00
Compare commits
2 Commits
7ba64d437a
...
reproducib
Author | SHA1 | Date | |
---|---|---|---|
|
5aed9675ac | ||
|
1e38b038ec |
@@ -3,7 +3,7 @@
|
||||
"isRoot": true,
|
||||
"tools": {
|
||||
"fantomas": {
|
||||
"version": "6.3.15",
|
||||
"version": "6.3.4",
|
||||
"commands": [
|
||||
"fantomas"
|
||||
]
|
||||
|
24
.github/dependabot.yml
vendored
24
.github/dependabot.yml
vendored
@@ -1,12 +1,12 @@
|
||||
# To get started with Dependabot version updates, you'll need to specify which
|
||||
# package ecosystems to update and where the package manifests are located.
|
||||
# Please see the documentation for all configuration options:
|
||||
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||
|
||||
version: 2
|
||||
updates:
|
||||
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
# To get started with Dependabot version updates, you'll need to specify which
|
||||
# package ecosystems to update and where the package manifests are located.
|
||||
# Please see the documentation for all configuration options:
|
||||
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||
|
||||
version: 2
|
||||
updates:
|
||||
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
|
33
.github/workflows/dotnet.yaml
vendored
33
.github/workflows/dotnet.yaml
vendored
@@ -27,17 +27,16 @@ jobs:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0 # so that NerdBank.GitVersioning has access to history
|
||||
- name: Install Nix
|
||||
uses: cachix/install-nix-action@v31
|
||||
- name: Setup .NET
|
||||
uses: actions/setup-dotnet@v4
|
||||
with:
|
||||
extra_nix_config: |
|
||||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||
dotnet-version: 7.0.x
|
||||
- name: Restore dependencies
|
||||
run: nix develop --command dotnet restore
|
||||
run: dotnet restore
|
||||
- name: Build
|
||||
run: nix develop --command dotnet build --no-restore --configuration ${{matrix.config}}
|
||||
run: dotnet build --no-restore --configuration ${{matrix.config}}
|
||||
- name: Test
|
||||
run: nix develop --command dotnet test --no-build --verbosity normal --configuration ${{matrix.config}}
|
||||
run: dotnet test --no-build --verbosity normal --configuration ${{matrix.config}}
|
||||
|
||||
build-nix:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -45,7 +44,7 @@ jobs:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Install Nix
|
||||
uses: cachix/install-nix-action@v31
|
||||
uses: cachix/install-nix-action@V27
|
||||
with:
|
||||
extra_nix_config: |
|
||||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -60,7 +59,7 @@ jobs:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Install Nix
|
||||
uses: cachix/install-nix-action@v31
|
||||
uses: cachix/install-nix-action@V27
|
||||
with:
|
||||
extra_nix_config: |
|
||||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -73,7 +72,7 @@ jobs:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Install Nix
|
||||
uses: cachix/install-nix-action@v31
|
||||
uses: cachix/install-nix-action@V27
|
||||
with:
|
||||
extra_nix_config: |
|
||||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -86,7 +85,7 @@ jobs:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Install Nix
|
||||
uses: cachix/install-nix-action@v31
|
||||
uses: cachix/install-nix-action@V27
|
||||
with:
|
||||
extra_nix_config: |
|
||||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -99,7 +98,7 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
- name: Install Nix
|
||||
uses: cachix/install-nix-action@v31
|
||||
uses: cachix/install-nix-action@V27
|
||||
with:
|
||||
extra_nix_config: |
|
||||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -108,10 +107,12 @@ jobs:
|
||||
run: 'nix develop --command markdown-link-check {,**/}*.md'
|
||||
|
||||
all-required-checks-complete:
|
||||
needs: [check-dotnet-format, check-nix-format, build, build-nix, linkcheck, check-flake]
|
||||
if: ${{ always() }}
|
||||
needs: [check-dotnet-format, check-nix-format, build, build-nix, linkcheck, check-flake]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: G-Research/common-actions/check-required-lite@2b7dc49cb14f3344fbe6019c14a31165e258c059
|
||||
with:
|
||||
needs-context: ${{ toJSON(needs) }}
|
||||
- uses: actions/checkout@v4
|
||||
- name: Check job statuses
|
||||
env:
|
||||
RESULTS: ${{ toJSON(needs) }}
|
||||
run: python .github/workflows/required_checks.py
|
||||
|
9
.github/workflows/flake_update.yaml
vendored
9
.github/workflows/flake_update.yaml
vendored
@@ -22,17 +22,20 @@ jobs:
|
||||
run: 'nix flake update'
|
||||
|
||||
- name: Build passthru
|
||||
run: 'nix build ".#default.fetch-deps"'
|
||||
run: 'nix build ".#default.passthru.fetch-deps"'
|
||||
|
||||
- name: Run passthru
|
||||
run: ./result nix/deps.json
|
||||
run: |
|
||||
set -o pipefail
|
||||
./result | tee /tmp/passthru.txt
|
||||
cp /"$(cat /tmp/passthru.txt | grep " wrote lockfile to " | cut -d / -f 2-)" nix/deps.nix
|
||||
|
||||
- name: Format
|
||||
run: 'nix develop --command alejandra .'
|
||||
|
||||
- name: Create token
|
||||
id: generate-token
|
||||
uses: actions/create-github-app-token@v2
|
||||
uses: actions/create-github-app-token@v1
|
||||
with:
|
||||
# https://github.com/actions/create-github-app-token/issues/136
|
||||
app-id: ${{ secrets.APP_ID }}
|
||||
|
40
.github/workflows/required_checks.py
vendored
Normal file
40
.github/workflows/required_checks.py
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
import os
|
||||
import json
|
||||
import sys
|
||||
from typing import Any
|
||||
|
||||
results_json = os.environ.get('RESULTS', '{}') or sys.exit(1)
|
||||
|
||||
try:
|
||||
results = json.loads(results_json)
|
||||
except json.JSONDecodeError:
|
||||
print("Error: Unable to parse RESULTS as JSON")
|
||||
exit(1)
|
||||
|
||||
def process_job(job_name: str, job_data: dict[str, Any]) -> int:
|
||||
"""
|
||||
Returns 0 on success and 1 on error.
|
||||
"""
|
||||
status = job_data['result']
|
||||
print(f"Processing job: {job_name} with status: {status}")
|
||||
|
||||
if status == "success":
|
||||
print(f"Job {job_name} succeeded.")
|
||||
return 0
|
||||
elif status in {"failure", "cancelled"}:
|
||||
print(f"Job {job_name} failed: status {status}!")
|
||||
return 1
|
||||
else:
|
||||
print(f"Job {job_name} has unknown status: {status}!")
|
||||
return 1
|
||||
|
||||
# Iterate over each job
|
||||
exit_status = 0
|
||||
for job_name, job_data in results.items():
|
||||
if not isinstance(job_data, dict):
|
||||
print(f"Unexpected shape at key {job_name}: {job_data}")
|
||||
sys.exit(2)
|
||||
exit_status += process_job(job_name, job_data)
|
||||
|
||||
if exit_status > 0:
|
||||
sys.exit(3)
|
2
.gitignore
vendored
2
.gitignore
vendored
@@ -14,5 +14,3 @@ result
|
||||
node_modules/
|
||||
package.json
|
||||
package-lock.json
|
||||
|
||||
Generated*.fs
|
||||
|
@@ -8,8 +8,8 @@
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Nerdbank.GitVersioning" Version="3.8.38-alpha" PrivateAssets="all" />
|
||||
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All" />
|
||||
<PackageReference Include="Nerdbank.GitVersioning" Version="3.6.133" PrivateAssets="all" />
|
||||
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="All" />
|
||||
<SourceLinkGitHubHost Include="github.com" ContentUrl="https://raw.githubusercontent.com" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
@@ -1,20 +1,20 @@
|
||||
namespace Gitea.Declarative
|
||||
|
||||
[<RequireQualifiedAccess>]
|
||||
module internal List =
|
||||
module internal Array =
|
||||
|
||||
/// f takes a page number and a limit (i.e. a desired page size).
|
||||
let getPaginated (f : int -> int -> 'a list Async) : 'a list Async =
|
||||
let getPaginated (f : int64 -> int64 -> 'a array Async) : 'a list Async =
|
||||
let count = 30
|
||||
|
||||
let rec go (page : int) (acc : 'a list list) =
|
||||
let rec go (page : int) (acc : 'a array list) =
|
||||
async {
|
||||
let! result = f page count
|
||||
|
||||
if result.Length >= count then
|
||||
return! go (page + 1) (result :: acc)
|
||||
else
|
||||
return (result :: acc) |> List.concat
|
||||
return (result :: acc) |> Seq.concat |> Seq.toList
|
||||
}
|
||||
|
||||
go 1 []
|
@@ -1,7 +1,5 @@
|
||||
namespace Gitea.Declarative
|
||||
|
||||
open System.Threading.Tasks
|
||||
|
||||
[<RequireQualifiedAccess>]
|
||||
module Async =
|
||||
|
||||
@@ -10,20 +8,3 @@ module Async =
|
||||
let! a = a
|
||||
return f a
|
||||
}
|
||||
|
||||
/// The input function takes page first, then count.
|
||||
/// Repeatedly calls `f` with increasing page numbers until all results are returned.
|
||||
let getAllPaginated (f : int64 -> int64 -> 'ret array Task) : 'ret array Async =
|
||||
let rec go (page : int64) (soFar : 'ret array) =
|
||||
async {
|
||||
let! newPage = f page 100L |> Async.AwaitTask
|
||||
|
||||
let soFar = Array.append soFar newPage
|
||||
|
||||
if newPage.Length < 100 then
|
||||
return soFar
|
||||
else
|
||||
return! go (page + 1L) soFar
|
||||
}
|
||||
|
||||
go 0L [||]
|
||||
|
@@ -18,37 +18,21 @@ type MergeStyle =
|
||||
elif s = "rebase-merge" then MergeStyle.RebaseMerge
|
||||
else failwithf "Unrecognised merge style '%s'" s
|
||||
|
||||
override this.ToString () : string =
|
||||
match this with
|
||||
static member toString (s : MergeStyle) : string =
|
||||
match s with
|
||||
| Merge -> "merge"
|
||||
| RebaseMerge -> "rebase-merge"
|
||||
| Rebase -> "rebase"
|
||||
| Squash -> "squash"
|
||||
|
||||
static member toString (m : MergeStyle) = m.ToString ()
|
||||
|
||||
[<NoComparison>]
|
||||
[<CustomEquality>]
|
||||
type PushMirror =
|
||||
{
|
||||
GitHubAddress : Uri
|
||||
/// Gitea should always tell us a remote name, but a user in their config can't.
|
||||
RemoteName : string option
|
||||
}
|
||||
|
||||
/// Equality check ignores remote names, which are not known to the user but which Gitea tracks internally.
|
||||
override this.Equals (other : obj) : bool =
|
||||
match other with
|
||||
| :? PushMirror as other -> this.GitHubAddress.ToString () = other.GitHubAddress.ToString ()
|
||||
| _ -> false
|
||||
|
||||
override this.GetHashCode () : int =
|
||||
this.GitHubAddress.ToString().GetHashCode ()
|
||||
|
||||
static member OfSerialised (s : SerialisedPushMirror) : PushMirror =
|
||||
{
|
||||
GitHubAddress = Uri s.GitHubAddress
|
||||
RemoteName = None
|
||||
}
|
||||
|
||||
member this.ToSerialised () : SerialisedPushMirror =
|
||||
@@ -96,7 +80,7 @@ type NativeRepo =
|
||||
AllowRebase : bool option
|
||||
AllowRebaseExplicit : bool option
|
||||
AllowMergeCommits : bool option
|
||||
Mirrors : PushMirror list
|
||||
Mirror : PushMirror option
|
||||
ProtectedBranches : ProtectedBranch Set
|
||||
Collaborators : string Set
|
||||
}
|
||||
@@ -117,7 +101,7 @@ type NativeRepo =
|
||||
AllowRebase = Some false
|
||||
AllowRebaseExplicit = Some false
|
||||
AllowMergeCommits = Some false
|
||||
Mirrors = []
|
||||
Mirror = None
|
||||
ProtectedBranches = Set.empty
|
||||
Collaborators = Set.empty
|
||||
}
|
||||
@@ -142,7 +126,7 @@ type NativeRepo =
|
||||
AllowRebase = this.AllowRebase |> Option.orElse NativeRepo.Default.AllowRebase
|
||||
AllowRebaseExplicit = this.AllowRebaseExplicit |> Option.orElse NativeRepo.Default.AllowRebaseExplicit
|
||||
AllowMergeCommits = this.AllowMergeCommits |> Option.orElse NativeRepo.Default.AllowMergeCommits
|
||||
Mirrors = this.Mirrors
|
||||
Mirror = this.Mirror
|
||||
ProtectedBranches = this.ProtectedBranches // TODO should this replace null with empty?
|
||||
Collaborators = this.Collaborators
|
||||
}
|
||||
@@ -163,12 +147,7 @@ type NativeRepo =
|
||||
AllowRebase = s.AllowRebase |> Option.ofNullable
|
||||
AllowRebaseExplicit = s.AllowRebaseExplicit |> Option.ofNullable
|
||||
AllowMergeCommits = s.AllowMergeCommits |> Option.ofNullable
|
||||
Mirrors =
|
||||
s.Mirrors
|
||||
|> Option.ofObj
|
||||
|> Option.defaultValue [||]
|
||||
|> List.ofArray
|
||||
|> List.map PushMirror.OfSerialised
|
||||
Mirror = s.Mirror |> Option.ofNullable |> Option.map PushMirror.OfSerialised
|
||||
ProtectedBranches =
|
||||
match s.ProtectedBranches with
|
||||
| null -> Set.empty
|
||||
@@ -198,7 +177,10 @@ type NativeRepo =
|
||||
AllowRebase = this.AllowRebase |> Option.toNullable
|
||||
AllowRebaseExplicit = this.AllowRebaseExplicit |> Option.toNullable
|
||||
AllowMergeCommits = this.AllowMergeCommits |> Option.toNullable
|
||||
Mirrors = this.Mirrors |> List.toArray |> Array.map (fun a -> a.ToSerialised ())
|
||||
Mirror =
|
||||
match this.Mirror with
|
||||
| None -> Nullable ()
|
||||
| Some mirror -> Nullable (mirror.ToSerialised ())
|
||||
ProtectedBranches = this.ProtectedBranches |> Seq.map (fun b -> b.ToSerialised ()) |> Array.ofSeq
|
||||
Collaborators = Set.toArray this.Collaborators
|
||||
}
|
||||
@@ -240,145 +222,85 @@ type Repo =
|
||||
Native = this.Native |> Option.map (fun s -> s.OverrideDefaults ())
|
||||
}
|
||||
|
||||
static member Render (client : GiteaClient.IGiteaClient) (u : GiteaClient.Repository) : Repo Async =
|
||||
match u.Mirror, u.OriginalUrl with
|
||||
| Some true, Some originalUrl when originalUrl <> "" ->
|
||||
static member Render (client : IGiteaClient) (u : Gitea.Repository) : Repo Async =
|
||||
if u.Mirror = Some true && not (String.IsNullOrEmpty u.OriginalUrl) then
|
||||
{
|
||||
Description =
|
||||
match u.Description with
|
||||
| None -> "(no description)"
|
||||
| Some d -> d
|
||||
Description = u.Description
|
||||
GitHub =
|
||||
{
|
||||
Uri = Uri originalUrl
|
||||
MirrorInterval =
|
||||
match u.MirrorInterval with
|
||||
| None -> "8h0m0s"
|
||||
| Some s -> s
|
||||
Uri = Uri u.OriginalUrl
|
||||
MirrorInterval = u.MirrorInterval
|
||||
}
|
||||
|> Some
|
||||
Native = None
|
||||
Deleted = None
|
||||
}
|
||||
|> async.Return
|
||||
| _, _ ->
|
||||
let repoFullName =
|
||||
match u.FullName with
|
||||
| None -> failwith "Repo unexpectedly had no full name!"
|
||||
| Some f -> f
|
||||
|
||||
else
|
||||
async {
|
||||
let owner =
|
||||
match u.Owner with
|
||||
| None -> failwith "Gitea unexpectedly gave us a repository with no owner!"
|
||||
| Some owner -> owner
|
||||
|
||||
let loginName =
|
||||
match owner.LoginName with
|
||||
| None -> failwith "Owner of repo unexpectedly had no login name!"
|
||||
| Some n -> n
|
||||
|
||||
let! mirrors =
|
||||
List.getPaginated (fun page count ->
|
||||
async {
|
||||
let! ct = Async.CancellationToken
|
||||
|
||||
return!
|
||||
client.RepoListPushMirrors (loginName, repoFullName, page, count, ct)
|
||||
|> Async.AwaitTask
|
||||
}
|
||||
let! mirror =
|
||||
getAllPaginated (fun page count ->
|
||||
client.RepoListPushMirrors (u.Owner.LoginName, u.FullName, Some page, Some count)
|
||||
)
|
||||
|
||||
let! (branchProtections : GiteaClient.BranchProtection list) =
|
||||
async {
|
||||
let! ct = Async.CancellationToken
|
||||
return! client.RepoListBranchProtection (loginName, repoFullName, ct) |> Async.AwaitTask
|
||||
}
|
||||
let mirror =
|
||||
if mirror.Length = 0 then None
|
||||
elif mirror.Length = 1 then Some mirror.[0]
|
||||
else failwith "Multiple mirrors not supported yet"
|
||||
|
||||
let! (collaborators : GiteaClient.User list) =
|
||||
List.getPaginated (fun page count ->
|
||||
async {
|
||||
let! ct = Async.CancellationToken
|
||||
let! (branchProtections : Gitea.BranchProtection[]) =
|
||||
client.RepoListBranchProtection (u.Owner.LoginName, u.FullName)
|
||||
|> Async.AwaitTask
|
||||
|
||||
return!
|
||||
client.RepoListCollaborators (loginName, repoFullName, page, count, ct)
|
||||
|> Async.AwaitTask
|
||||
}
|
||||
let! (collaborators : Gitea.User[]) =
|
||||
getAllPaginated (fun page count ->
|
||||
client.RepoListCollaborators (u.Owner.LoginName, u.FullName, Some page, Some count)
|
||||
)
|
||||
|
||||
let defaultBranch =
|
||||
match u.DefaultBranch with
|
||||
| None -> failwith "repo unexpectedly had no default branch!"
|
||||
| Some d -> d
|
||||
|
||||
let collaborators =
|
||||
collaborators
|
||||
|> Seq.map (fun user ->
|
||||
match user.LoginName with
|
||||
| None -> failwith "user unexpectedly had no login name!"
|
||||
| Some n -> n
|
||||
)
|
||||
|> Set.ofSeq
|
||||
|
||||
let description =
|
||||
match u.Description with
|
||||
| None -> failwith "Unexpectedly got no description on a repo!"
|
||||
| Some d -> d
|
||||
|
||||
return
|
||||
|
||||
{
|
||||
Description = description
|
||||
Description = u.Description
|
||||
Deleted = None
|
||||
GitHub = None
|
||||
Native =
|
||||
{
|
||||
Private = u.Private
|
||||
DefaultBranch = defaultBranch
|
||||
DefaultBranch = u.DefaultBranch
|
||||
IgnoreWhitespaceConflicts = u.IgnoreWhitespaceConflicts
|
||||
HasPullRequests = u.HasPullRequests
|
||||
HasProjects = u.HasProjects
|
||||
HasIssues = u.HasIssues
|
||||
HasWiki = u.HasWiki
|
||||
DefaultMergeStyle = u.DefaultMergeStyle |> Option.map MergeStyle.Parse
|
||||
DefaultMergeStyle = u.DefaultMergeStyle |> Option.ofObj |> Option.map MergeStyle.Parse
|
||||
DeleteBranchAfterMerge = u.DefaultDeleteBranchAfterMerge
|
||||
AllowSquashMerge = u.AllowSquashMerge
|
||||
AllowRebaseUpdate = u.AllowRebaseUpdate
|
||||
AllowRebase = u.AllowRebase
|
||||
AllowRebaseExplicit = u.AllowRebaseExplicit
|
||||
AllowMergeCommits = u.AllowMergeCommits
|
||||
Mirrors =
|
||||
mirrors
|
||||
|> List.map (fun m ->
|
||||
match m.RemoteAddress, m.RemoteName with
|
||||
| None, _ -> failwith "Unexpectedly have a PushMirror but no remote address!"
|
||||
| Some _, None ->
|
||||
failwith "Unexpectedly have a PushMirror with no remote name!"
|
||||
| Some s, Some remoteName ->
|
||||
{
|
||||
GitHubAddress = Uri s
|
||||
RemoteName = Some remoteName
|
||||
}
|
||||
Mirror =
|
||||
mirror
|
||||
|> Option.map (fun m ->
|
||||
{
|
||||
GitHubAddress = Uri m.RemoteAddress
|
||||
}
|
||||
)
|
||||
ProtectedBranches =
|
||||
branchProtections
|
||||
|> Seq.map (fun bp ->
|
||||
match bp.BranchName with
|
||||
| None -> failwith "Unexpectedly have a BranchProtection with no branch name!"
|
||||
| Some branchName ->
|
||||
|
||||
{
|
||||
BranchName = branchName
|
||||
BranchName = bp.BranchName
|
||||
BlockOnOutdatedBranch = bp.BlockOnOutdatedBranch
|
||||
RequiredStatusChecks =
|
||||
if bp.EnableStatusCheck = Some true then
|
||||
bp.StatusCheckContexts
|
||||
bp.StatusCheckContexts |> List.ofArray |> Some
|
||||
else
|
||||
None
|
||||
}
|
||||
)
|
||||
|> Set.ofSeq
|
||||
Collaborators = collaborators
|
||||
Collaborators = collaborators |> Seq.map (fun user -> user.LoginName) |> Set.ofSeq
|
||||
}
|
||||
|> Some
|
||||
}
|
||||
@@ -423,24 +345,20 @@ type UserInfo =
|
||||
Visibility : string option
|
||||
}
|
||||
|
||||
static member Render (u : GiteaClient.User) : UserInfo =
|
||||
let website =
|
||||
u.Website
|
||||
|> Option.bind (fun ws ->
|
||||
match Uri.TryCreate (ws, UriKind.Absolute) with
|
||||
| false, _ -> None
|
||||
| true, uri -> Some uri
|
||||
)
|
||||
|
||||
let email =
|
||||
u.Email
|
||||
|> Option.defaultWith (fun () -> failwith "Gitea user failed to have an email!")
|
||||
|
||||
static member Render (u : Gitea.User) : UserInfo =
|
||||
{
|
||||
IsAdmin = u.IsAdmin
|
||||
Email = email
|
||||
Website = website
|
||||
Visibility = u.Visibility
|
||||
Email = u.Email
|
||||
Website =
|
||||
if String.IsNullOrEmpty u.Website then
|
||||
None
|
||||
else
|
||||
Some (Uri u.Website)
|
||||
Visibility =
|
||||
if String.IsNullOrEmpty u.Visibility then
|
||||
None
|
||||
else
|
||||
Some u.Visibility
|
||||
}
|
||||
|
||||
static member internal OfSerialised (s : SerialisedUserInfo) =
|
||||
|
@@ -2,7 +2,6 @@ namespace Gitea.Declarative
|
||||
|
||||
open System
|
||||
open System.ComponentModel
|
||||
open System.Text.Json.Nodes
|
||||
|
||||
[<TypeConverter(typeof<UserTypeConverter>)>]
|
||||
type User =
|
||||
@@ -12,10 +11,6 @@ type User =
|
||||
match this with
|
||||
| User u -> u
|
||||
|
||||
static member jsonParse (s : JsonNode) : User = s.GetValue<string> () |> User
|
||||
|
||||
static member toJsonNode (User u) : JsonNode = JsonValue.op_Implicit u
|
||||
|
||||
and UserTypeConverter () =
|
||||
inherit TypeConverter ()
|
||||
override _.CanConvertFrom (_, t : Type) : bool = t = typeof<string>
|
||||
@@ -29,10 +24,6 @@ type RepoName =
|
||||
match this with
|
||||
| RepoName r -> r
|
||||
|
||||
static member jsonParse (s : JsonNode) : RepoName = s.GetValue<string> () |> RepoName
|
||||
|
||||
static member toJsonNode (RepoName r) : JsonNode = JsonValue.op_Implicit r
|
||||
|
||||
and RepoNameTypeConverter () =
|
||||
inherit TypeConverter ()
|
||||
override _.CanConvertFrom (_, t : Type) : bool = t = typeof<string>
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>netstandard2.1</TargetFramework>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||
@@ -14,50 +14,31 @@
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||
<PackageTags>gitea</PackageTags>
|
||||
<WoofWareMyriadPluginVersion>7.0.1</WoofWareMyriadPluginVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="AssemblyInfo.fs" />
|
||||
<None Include="swagger.v1.json" />
|
||||
<Compile Include="GeneratedSwaggerGitea.fs">
|
||||
<MyriadFile>swagger.v1.json</MyriadFile>
|
||||
<MyriadParams>
|
||||
<GenerateMockVisibility>public</GenerateMockVisibility>
|
||||
<ClassName>GiteaClient</ClassName>
|
||||
</MyriadParams>
|
||||
</Compile>
|
||||
<Compile Include="Generated2SwaggerGitea.fs">
|
||||
<MyriadFile>GeneratedSwaggerGitea.fs</MyriadFile>
|
||||
</Compile>
|
||||
<Compile Include="Map.fs" />
|
||||
<Compile Include="Exception.fs" />
|
||||
<Compile Include="List.fs" />
|
||||
<Compile Include="Async.fs" />
|
||||
<Compile Include="GiteaClient.fs" />
|
||||
<Compile Include="IGiteaClient.fs" />
|
||||
<Compile Include="Domain.fs" />
|
||||
<Compile Include="SerialisedConfigSchema.fs" />
|
||||
<Compile Include="ConfigSchema.fs" />
|
||||
<Compile Include="Array.fs" />
|
||||
<Compile Include="UserInput.fs" />
|
||||
<Compile Include="Gitea.fs" />
|
||||
<EmbeddedResource Include="GiteaConfig.schema.json" />
|
||||
<Content Include="swagger.v1.json" />
|
||||
<EmbeddedResource Include="version.json" />
|
||||
<None Include="..\README.md" Pack="true" PackagePath="/" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageReference Include="SwaggerProvider" Version="1.0.1" />
|
||||
<PackageReference Include="System.Text.Json" Version="8.0.5" />
|
||||
<PackageReference Update="FSharp.Core" Version="6.0.1" />
|
||||
<PackageReference Include="Myriad.Sdk" Version="0.8.3" PrivateAssets="all" />
|
||||
<PackageReference Include="WoofWare.Myriad.Plugins.Attributes" Version="3.6.9" />
|
||||
<PackageReference Include="WoofWare.Myriad.Plugins" Version="$(WoofWareMyriadPluginVersion)" PrivateAssets="all" />
|
||||
|
||||
<!-- Absolutely astonishing stuff here, world class software everyone, nice work https://github.com/dotnet/sdk/issues/42651#issuecomment-2372410311 -->
|
||||
<PackageReference Include="System.Private.Uri" Version="4.3.2" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<MyriadSdkGenerator Include="$(NuGetPackageRoot)/woofware.myriad.plugins/$(WoofWareMyriadPluginVersion)/lib/net6.0/WoofWare.Myriad.Plugins.dll" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageReference Update="FSharp.Core" Version="6.0.0" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
File diff suppressed because it is too large
Load Diff
29
Gitea.Declarative.Lib/GiteaClient.fs
Normal file
29
Gitea.Declarative.Lib/GiteaClient.fs
Normal file
@@ -0,0 +1,29 @@
|
||||
namespace Gitea.Declarative
|
||||
|
||||
open System.Threading.Tasks
|
||||
open SwaggerProvider
|
||||
|
||||
[<AutoOpen>]
|
||||
module GiteaClient =
|
||||
|
||||
[<Literal>]
|
||||
let Host = "file://" + __SOURCE_DIRECTORY__ + "/swagger.v1.json"
|
||||
|
||||
type Gitea = SwaggerClientProvider<Host>
|
||||
|
||||
/// The input function takes page first, then count.
|
||||
/// Repeatedly calls `f` with increasing page numbers until all results are returned.
|
||||
let getAllPaginated (f : int64 -> int64 -> 'ret array Task) : 'ret array Async =
|
||||
let rec go (page : int64) (soFar : 'ret array) =
|
||||
async {
|
||||
let! newPage = f page 100L |> Async.AwaitTask
|
||||
|
||||
let soFar = Array.append soFar newPage
|
||||
|
||||
if newPage.Length < 100 then
|
||||
return soFar
|
||||
else
|
||||
return! go (page + 1L) soFar
|
||||
}
|
||||
|
||||
go 0L [||]
|
@@ -188,12 +188,13 @@
|
||||
"type": "boolean",
|
||||
"description": "either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits."
|
||||
},
|
||||
"mirrors": {
|
||||
"type": "array",
|
||||
"description": "Configure GitHub push mirrors to sync this repo to",
|
||||
"items": {
|
||||
"$ref": "#/definitions/SerialisedPushMirror"
|
||||
}
|
||||
"mirror": {
|
||||
"description": "Configure a GitHub push mirror to sync this repo to",
|
||||
"oneOf": [
|
||||
{
|
||||
"$ref": "#/definitions/SerialisedPushMirror"
|
||||
}
|
||||
]
|
||||
},
|
||||
"protectedBranches": {
|
||||
"type": [
|
||||
|
90
Gitea.Declarative.Lib/IGiteaClient.fs
Normal file
90
Gitea.Declarative.Lib/IGiteaClient.fs
Normal file
@@ -0,0 +1,90 @@
|
||||
namespace Gitea.Declarative
|
||||
|
||||
open System.Threading.Tasks
|
||||
|
||||
type IGiteaClient =
|
||||
abstract AdminGetAllUsers : page : int64 option * limit : int64 option -> Gitea.User array Task
|
||||
abstract AdminCreateUser : Gitea.CreateUserOption -> Gitea.User Task
|
||||
abstract AdminDeleteUser : user : string -> unit Task
|
||||
abstract AdminEditUser : user : string * Gitea.EditUserOption -> Gitea.User Task
|
||||
abstract AdminCreateRepo : user : string * Gitea.CreateRepoOption -> Gitea.Repository Task
|
||||
|
||||
abstract UserListRepos : string * page : int64 option * count : int64 option -> Gitea.Repository array Task
|
||||
|
||||
abstract RepoAddPushMirror : user : string * repo : string * Gitea.CreatePushMirrorOption -> Gitea.PushMirror Task
|
||||
|
||||
abstract RepoListPushMirrors :
|
||||
loginName : string * userName : string * page : int64 option * count : int64 option ->
|
||||
Gitea.PushMirror array Task
|
||||
|
||||
abstract RepoDeletePushMirror : user : string * repo : string * remoteName : string -> unit Task
|
||||
|
||||
abstract RepoListBranchProtection : loginName : string * userName : string -> Gitea.BranchProtection array Task
|
||||
abstract RepoDeleteBranchProtection : user : string * repo : string * branch : string -> unit Task
|
||||
|
||||
abstract RepoCreateBranchProtection :
|
||||
user : string * repo : string * Gitea.CreateBranchProtectionOption -> Gitea.BranchProtection Task
|
||||
|
||||
abstract RepoEditBranchProtection :
|
||||
user : string * repo : string * branch : string * Gitea.EditBranchProtectionOption ->
|
||||
Gitea.BranchProtection Task
|
||||
|
||||
abstract RepoMigrate : Gitea.MigrateRepoOptions -> Gitea.Repository Task
|
||||
abstract RepoGet : user : string * repo : string -> Gitea.Repository Task
|
||||
abstract RepoDelete : user : string * repo : string -> unit Task
|
||||
abstract RepoEdit : user : string * repo : string * Gitea.EditRepoOption -> Gitea.Repository Task
|
||||
|
||||
abstract RepoListCollaborators :
|
||||
loginName : string * userName : string * page : int64 option * count : int64 option -> Gitea.User array Task
|
||||
|
||||
abstract RepoAddCollaborator : user : string * repo : string * collaborator : string -> unit Task
|
||||
abstract RepoDeleteCollaborator : user : string * repo : string * collaborator : string -> unit Task
|
||||
|
||||
[<RequireQualifiedAccess>]
|
||||
module IGiteaClient =
|
||||
let fromReal (client : Gitea.Client) : IGiteaClient =
|
||||
{ new IGiteaClient with
|
||||
member _.AdminGetAllUsers (page, limit) = client.AdminGetAllUsers (page, limit)
|
||||
member _.AdminCreateUser user = client.AdminCreateUser user
|
||||
member _.AdminDeleteUser user = client.AdminDeleteUser user
|
||||
member _.AdminEditUser (user, option) = client.AdminEditUser (user, option)
|
||||
member _.AdminCreateRepo (user, option) = client.AdminCreateRepo (user, option)
|
||||
|
||||
member _.UserListRepos (user, page, count) =
|
||||
client.UserListRepos (user, page, count)
|
||||
|
||||
member _.RepoAddPushMirror (user, repo, options) =
|
||||
client.RepoAddPushMirror (user, repo, options)
|
||||
|
||||
member _.RepoListPushMirrors (loginName, userName, page, count) =
|
||||
client.RepoListPushMirrors (loginName, userName, page, count)
|
||||
|
||||
member _.RepoDeletePushMirror (loginName, repo, remoteName) =
|
||||
client.RepoDeletePushMirror (loginName, repo, remoteName)
|
||||
|
||||
member _.RepoListBranchProtection (login, user) =
|
||||
client.RepoListBranchProtection (login, user)
|
||||
|
||||
member _.RepoDeleteBranchProtection (user, repo, branch) =
|
||||
client.RepoDeleteBranchProtection (user, repo, branch)
|
||||
|
||||
member _.RepoCreateBranchProtection (user, repo, options) =
|
||||
client.RepoCreateBranchProtection (user, repo, options)
|
||||
|
||||
member _.RepoEditBranchProtection (user, repo, branch, edit) =
|
||||
client.RepoEditBranchProtection (user, repo, branch, edit)
|
||||
|
||||
member _.RepoMigrate options = client.RepoMigrate options
|
||||
member _.RepoGet (user, repo) = client.RepoGet (user, repo)
|
||||
member _.RepoDelete (user, repo) = client.RepoDelete (user, repo)
|
||||
member _.RepoEdit (user, repo, options) = client.RepoEdit (user, repo, options)
|
||||
|
||||
member _.RepoListCollaborators (login, user, page, count) =
|
||||
client.RepoListCollaborators (login, user, page, count)
|
||||
|
||||
member _.RepoAddCollaborator (user, repo, collaborator) =
|
||||
client.RepoAddCollaborator (user, repo, collaborator)
|
||||
|
||||
member _.RepoDeleteCollaborator (user, repo, collaborator) =
|
||||
client.RepoDeleteCollaborator (user, repo, collaborator)
|
||||
}
|
@@ -81,8 +81,8 @@ type internal SerialisedNativeRepo =
|
||||
[<Description "either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits.">]
|
||||
AllowMergeCommits : Nullable<bool>
|
||||
[<JsonProperty(Required = Required.DisallowNull)>]
|
||||
[<Description "Configure GitHub push mirrors to sync this repo to">]
|
||||
Mirrors : SerialisedPushMirror[]
|
||||
[<Description "Configure a GitHub push mirror to sync this repo to">]
|
||||
Mirror : Nullable<SerialisedPushMirror>
|
||||
[<JsonProperty(Required = Required.Default)>]
|
||||
[<Description "Protected branch configuration">]
|
||||
ProtectedBranches : SerialisedProtectedBranch array
|
||||
|
@@ -1,9 +1,8 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<IsPackable>false</IsPackable>
|
||||
<NuGetAudit>false</NuGetAudit>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
@@ -1,117 +1,95 @@
|
||||
{
|
||||
"users": {
|
||||
"admin": {
|
||||
"isAdmin": true,
|
||||
"email": "some-admin-email@example.com",
|
||||
"visibility": "private"
|
||||
},
|
||||
"nonadmin-user": {
|
||||
"isAdmin": false,
|
||||
"email": "some-nonadmin-email@example.com",
|
||||
"website": "https://example.com",
|
||||
"visibility": "public"
|
||||
}
|
||||
},
|
||||
"repos": {
|
||||
"nonadmin-user": {
|
||||
"synced-from-github-repo-1": {
|
||||
"description": "A repo that is imported from GitHub",
|
||||
"gitHub": {
|
||||
"uri": "https://github.com/MyName/repo-name"
|
||||
}
|
||||
},
|
||||
"synced-from-github-repo-2": {
|
||||
"description": "Another repo that is imported from GitHub",
|
||||
"gitHub": {
|
||||
"uri": "https://github.com/MyName/repo-name-2"
|
||||
}
|
||||
},
|
||||
"new-repo": {
|
||||
"description": "A repo that's created directly on this Gitea",
|
||||
"native": {
|
||||
"defaultBranch": "main",
|
||||
"private": false
|
||||
}
|
||||
},
|
||||
"new-repo-mirrored": {
|
||||
"description": "A repo that's created directly on this Gitea and mirrored to GitHub",
|
||||
"native": {
|
||||
"defaultBranch": "main",
|
||||
"private": false,
|
||||
"mirrors": [
|
||||
{
|
||||
"gitHubAddress": "https://github.com/MyName/repo-name-3"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"new-repo-mirrored-with-branches": {
|
||||
"description": "A repo that's created directly on this Gitea and mirrored to GitHub",
|
||||
"native": {
|
||||
"defaultBranch": "main",
|
||||
"private": false,
|
||||
"mirrors": [
|
||||
{
|
||||
"gitHubAddress": "https://github.com/MyName/repo-name-3"
|
||||
}
|
||||
],
|
||||
"protectedBranches": [
|
||||
{
|
||||
"branchName": "main"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"new-repo-mirrored-with-branches-and-protection": {
|
||||
"description": "A repo that's created directly on this Gitea and mirrored to GitHub",
|
||||
"native": {
|
||||
"defaultBranch": "main",
|
||||
"private": false,
|
||||
"mirrors": [
|
||||
{
|
||||
"gitHubAddress": "https://github.com/MyName/repo-name-3"
|
||||
}
|
||||
],
|
||||
"protectedBranches": [
|
||||
{
|
||||
"branchName": "main",
|
||||
"blockOnOutdatedBranch": true,
|
||||
"requiredStatusChecks": [
|
||||
"all-pr-checks-complete"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"deleted-repo": {
|
||||
"description": "A repo that's been scheduled for deletion at the next run",
|
||||
"deleted": true,
|
||||
"native": {
|
||||
"defaultBranch": "main",
|
||||
"private": false,
|
||||
"mirrors": [
|
||||
{
|
||||
"gitHubAddress": "https://github.com/MyName/repo-name-3"
|
||||
}
|
||||
],
|
||||
"protectedBranches": [
|
||||
{
|
||||
"branchName": "main",
|
||||
"blockOnOutdatedBranch": true,
|
||||
"requiredStatusChecks": [
|
||||
"all-pr-checks-complete"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"deleted-mirror": {
|
||||
"description": "A repo that's been scheduled for deletion at the next run",
|
||||
"deleted": true,
|
||||
"gitHub": {
|
||||
"uri": "https://github.com/MyName/only-remaining-copy"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
"users": {
|
||||
"admin": {
|
||||
"isAdmin": true,
|
||||
"email": "some-admin-email@example.com",
|
||||
"visibility": "private"
|
||||
},
|
||||
"nonadmin-user": {
|
||||
"isAdmin": false,
|
||||
"email": "some-nonadmin-email@example.com",
|
||||
"website": "https://example.com",
|
||||
"visibility": "public"
|
||||
}
|
||||
},
|
||||
"repos": {
|
||||
"nonadmin-user": {
|
||||
"synced-from-github-repo-1": {
|
||||
"description": "A repo that is imported from GitHub",
|
||||
"gitHub": {
|
||||
"uri": "https://github.com/MyName/repo-name"
|
||||
}
|
||||
},
|
||||
"synced-from-github-repo-2": {
|
||||
"description": "Another repo that is imported from GitHub",
|
||||
"gitHub": {
|
||||
"uri": "https://github.com/MyName/repo-name-2"
|
||||
}
|
||||
},
|
||||
"new-repo": {
|
||||
"description": "A repo that's created directly on this Gitea",
|
||||
"native": {
|
||||
"defaultBranch": "main",
|
||||
"private": false
|
||||
}
|
||||
},
|
||||
"new-repo-mirrored": {
|
||||
"description": "A repo that's created directly on this Gitea and mirrored to GitHub",
|
||||
"native": {
|
||||
"defaultBranch": "main",
|
||||
"private": false,
|
||||
"mirror": {
|
||||
"gitHubAddress": "https://github.com/MyName/repo-name-3"
|
||||
}
|
||||
}
|
||||
},
|
||||
"new-repo-mirrored-with-branches": {
|
||||
"description": "A repo that's created directly on this Gitea and mirrored to GitHub",
|
||||
"native": {
|
||||
"defaultBranch": "main",
|
||||
"private": false,
|
||||
"mirror": {
|
||||
"gitHubAddress": "https://github.com/MyName/repo-name-3"
|
||||
},
|
||||
"protectedBranches": [
|
||||
{ "branchName": "main" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"new-repo-mirrored-with-branches-and-protection": {
|
||||
"description": "A repo that's created directly on this Gitea and mirrored to GitHub",
|
||||
"native": {
|
||||
"defaultBranch": "main",
|
||||
"private": false,
|
||||
"mirror": {
|
||||
"gitHubAddress": "https://github.com/MyName/repo-name-3"
|
||||
},
|
||||
"protectedBranches": [
|
||||
{ "branchName": "main", "blockOnOutdatedBranch": true, "requiredStatusChecks": ["all-pr-checks-complete"] }
|
||||
]
|
||||
}
|
||||
},
|
||||
"deleted-repo": {
|
||||
"description": "A repo that's been scheduled for deletion at the next run",
|
||||
"deleted": true,
|
||||
"native": {
|
||||
"defaultBranch": "main",
|
||||
"private": false,
|
||||
"mirror": {
|
||||
"gitHubAddress": "https://github.com/MyName/repo-name-3"
|
||||
},
|
||||
"protectedBranches": [
|
||||
{ "branchName": "main", "blockOnOutdatedBranch": true, "requiredStatusChecks": ["all-pr-checks-complete"] }
|
||||
]
|
||||
}
|
||||
},
|
||||
"deleted-mirror": {
|
||||
"description": "A repo that's been scheduled for deletion at the next run",
|
||||
"deleted": true,
|
||||
"gitHub": {
|
||||
"uri": "https://github.com/MyName/only-remaining-copy"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -46,14 +46,15 @@ module TestSchema =
|
||||
let schema = reader.ReadToEnd ()
|
||||
schema.Contains "SerialisedGiteaConfig" |> shouldEqual true
|
||||
|
||||
let schemaFile : Lazy<FileInfo> =
|
||||
lazy
|
||||
[<Test>]
|
||||
[<Explicit "Run this to regenerate the schema file">]
|
||||
let ``Update schema file`` () =
|
||||
let schemaFile =
|
||||
Assembly.GetExecutingAssembly().Location
|
||||
|> FileInfo
|
||||
|> fun fi -> fi.Directory
|
||||
|> Utils.findFileAbove "Gitea.Declarative.Lib/GiteaConfig.schema.json"
|
||||
|
||||
let computeSchema () =
|
||||
let settings = JsonSchemaGeneratorSettings ()
|
||||
|
||||
settings.SerializerSettings <-
|
||||
@@ -77,16 +78,4 @@ module TestSchema =
|
||||
schema.RequiredProperties.Add "native"
|
||||
serialisedRepoSchema.OneOf.Add schema
|
||||
|
||||
schema
|
||||
|
||||
[<Test>]
|
||||
let ``Schema hasn't changed`` () =
|
||||
let computed = computeSchema () |> fun x -> x.ToJson ()
|
||||
let actual = File.ReadAllText (schemaFile.Force().FullName)
|
||||
computed |> shouldEqual actual
|
||||
|
||||
[<Test>]
|
||||
[<Explicit "Run this to regenerate the schema file">]
|
||||
let ``Update schema file`` () =
|
||||
let schema = computeSchema ()
|
||||
File.WriteAllText (schemaFile.Force().FullName, schema.ToJson ())
|
||||
File.WriteAllText (schemaFile.FullName, schema.ToJson ())
|
||||
|
@@ -15,7 +15,7 @@ module TestRepo =
|
||||
[<Test>]
|
||||
let ``We refuse to delete a repo if we get to Reconcile without positive confirmation`` () =
|
||||
let property (gitHubToken : string option) =
|
||||
let client = GiteaClient.GiteaClientMock.Empty
|
||||
let client = GiteaClientMock.Unimplemented
|
||||
|
||||
let lf, messages = LoggerFactory.makeTest ()
|
||||
let logger = lf.CreateLogger "test"
|
||||
@@ -42,10 +42,10 @@ module TestRepo =
|
||||
(user : User)
|
||||
(repos : Map<RepoName, Repo>)
|
||||
(userInfo : UserInfo)
|
||||
(repo : GiteaClient.Repository)
|
||||
(reposToReturn : GiteaClient.Repository list)
|
||||
(repo : Gitea.Repository)
|
||||
(reposToReturn : Gitea.Repository[])
|
||||
=
|
||||
let reposToReturn = repo :: reposToReturn
|
||||
let reposToReturn = Array.append [| repo |] reposToReturn
|
||||
|
||||
let reposToReturn =
|
||||
if reposToReturn.Length >= 5 then
|
||||
@@ -53,35 +53,25 @@ module TestRepo =
|
||||
else
|
||||
reposToReturn
|
||||
|
||||
for repo in reposToReturn do
|
||||
match repo.Name with
|
||||
| None -> failwith "generator should have put a name on every repo"
|
||||
| Some _ -> ()
|
||||
|
||||
let lf, messages = LoggerFactory.makeTest ()
|
||||
let logger = lf.CreateLogger "test"
|
||||
|
||||
let client =
|
||||
{ GiteaClient.GiteaClientMock.Empty with
|
||||
{ GiteaClientMock.Unimplemented with
|
||||
UserListRepos =
|
||||
fun (_username, _page, _limit, ct) ->
|
||||
fun (_username, _page, _limit) ->
|
||||
async {
|
||||
return
|
||||
reposToReturn
|
||||
|> List.filter (fun r -> not (repos.ContainsKey (RepoName (Option.get r.Name))))
|
||||
|> Array.filter (fun r -> not (repos.ContainsKey (RepoName r.Name)))
|
||||
}
|
||||
|> fun a -> Async.StartAsTask (a, ?cancellationToken = ct)
|
||||
|> Async.StartAsTask
|
||||
|
||||
RepoListPushMirrors =
|
||||
fun (_, _, _, _, ct) ->
|
||||
async { return [] } |> fun a -> Async.StartAsTask (a, ?cancellationToken = ct)
|
||||
RepoListPushMirrors = fun _ -> async { return [||] } |> Async.StartAsTask
|
||||
|
||||
RepoListBranchProtection =
|
||||
fun (_, _, ct) -> async { return [] } |> fun a -> Async.StartAsTask (a, ?cancellationToken = ct)
|
||||
RepoListBranchProtection = fun _ -> async { return [||] } |> Async.StartAsTask
|
||||
|
||||
RepoListCollaborators =
|
||||
fun (_, _, _, _, ct) ->
|
||||
async { return [] } |> fun a -> Async.StartAsTask (a, ?cancellationToken = ct)
|
||||
RepoListCollaborators = fun _ -> async { return [||] } |> Async.StartAsTask
|
||||
}
|
||||
|
||||
let config : GiteaConfig =
|
||||
@@ -131,14 +121,14 @@ module TestRepo =
|
||||
let logger = lf.CreateLogger "test"
|
||||
|
||||
let client =
|
||||
{ GiteaClient.GiteaClientMock.Empty with
|
||||
UserListRepos = fun _ -> Task.FromResult []
|
||||
{ GiteaClientMock.Unimplemented with
|
||||
UserListRepos = fun _ -> Task.FromResult [||]
|
||||
|
||||
RepoListPushMirrors = fun _ -> async { return [] } |> Async.StartAsTask
|
||||
RepoListPushMirrors = fun _ -> async { return [||] } |> Async.StartAsTask
|
||||
|
||||
RepoListBranchProtection = fun _ -> async { return [] } |> Async.StartAsTask
|
||||
RepoListBranchProtection = fun _ -> async { return [||] } |> Async.StartAsTask
|
||||
|
||||
RepoListCollaborators = fun _ -> async { return [] } |> Async.StartAsTask
|
||||
RepoListCollaborators = fun _ -> async { return [||] } |> Async.StartAsTask
|
||||
}
|
||||
|
||||
let config : GiteaConfig =
|
||||
@@ -178,10 +168,13 @@ module TestRepo =
|
||||
|
||||
let existingRepos = existingRepos |> Map.add oneExistingRepoName oneExistingRepo
|
||||
|
||||
let giteaUser = Types.emptyUser (user.ToString ())
|
||||
let giteaUser =
|
||||
let result = Gitea.User ()
|
||||
result.LoginName <- user.ToString ()
|
||||
result
|
||||
|
||||
let client =
|
||||
{ GiteaClient.GiteaClientMock.Empty with
|
||||
{ GiteaClientMock.Unimplemented with
|
||||
UserListRepos =
|
||||
fun _ ->
|
||||
async {
|
||||
@@ -189,20 +182,20 @@ module TestRepo =
|
||||
existingRepos
|
||||
|> Map.toSeq
|
||||
|> Seq.map (fun (RepoName repoName, _repoSpec) ->
|
||||
{ Types.emptyRepo repoName "main" with
|
||||
Name = Some repoName
|
||||
Owner = Some giteaUser
|
||||
}
|
||||
let repo = Gitea.Repository ()
|
||||
repo.Name <- repoName
|
||||
repo.Owner <- giteaUser
|
||||
repo
|
||||
)
|
||||
|> Seq.toList
|
||||
|> Seq.toArray
|
||||
}
|
||||
|> Async.StartAsTask
|
||||
|
||||
RepoListPushMirrors = fun _ -> async { return [] } |> Async.StartAsTask
|
||||
RepoListPushMirrors = fun _ -> async { return [||] } |> Async.StartAsTask
|
||||
|
||||
RepoListBranchProtection = fun _ -> async { return [] } |> Async.StartAsTask
|
||||
RepoListBranchProtection = fun _ -> async { return [||] } |> Async.StartAsTask
|
||||
|
||||
RepoListCollaborators = fun _ -> async { return [] } |> Async.StartAsTask
|
||||
RepoListCollaborators = fun _ -> async { return [||] } |> Async.StartAsTask
|
||||
}
|
||||
|
||||
let config : GiteaConfig =
|
||||
|
@@ -21,14 +21,14 @@ module TestUser =
|
||||
let result = TaskCompletionSource<bool option> ()
|
||||
|
||||
let client =
|
||||
{ GiteaClient.GiteaClientMock.Empty with
|
||||
{ GiteaClientMock.Unimplemented with
|
||||
AdminCreateUser =
|
||||
fun (options, ct) ->
|
||||
fun options ->
|
||||
async {
|
||||
result.SetResult options.MustChangePassword
|
||||
return Types.emptyUser "username"
|
||||
return null
|
||||
}
|
||||
|> fun a -> Async.StartAsTask (a, ?cancellationToken = ct)
|
||||
|> Async.StartAsTask
|
||||
}
|
||||
|
||||
[ User "username", AlignmentError.DoesNotExist desiredUser ]
|
||||
|
@@ -1,200 +1,108 @@
|
||||
namespace Gitea.Declarative.Test
|
||||
|
||||
open System.Collections.Generic
|
||||
open Gitea.Declarative
|
||||
open System
|
||||
open System.IO
|
||||
open FsCheck
|
||||
open Microsoft.FSharp.Reflection
|
||||
|
||||
[<RequireQualifiedAccess>]
|
||||
module Types =
|
||||
let emptyUser (loginName : string) : GiteaClient.User =
|
||||
{
|
||||
Active = None
|
||||
Created = None
|
||||
Description = None
|
||||
Email = None
|
||||
Id = None
|
||||
Language = None
|
||||
Location = None
|
||||
Login = None
|
||||
Restricted = None
|
||||
Visibility = None
|
||||
Website = None
|
||||
FullName = None
|
||||
IsAdmin = None
|
||||
LoginName = Some loginName
|
||||
ProhibitLogin = None
|
||||
AdditionalProperties = Dictionary ()
|
||||
AvatarUrl = None
|
||||
FollowersCount = None
|
||||
FollowingCount = None
|
||||
StarredReposCount = None
|
||||
LastLogin = None
|
||||
}
|
||||
|
||||
let emptyRepo (fullName : string) (defaultBranch : string) : GiteaClient.Repository =
|
||||
{
|
||||
Archived = None
|
||||
Description = Some "a description here"
|
||||
Empty = None
|
||||
Fork = None
|
||||
Id = None
|
||||
Internal = None
|
||||
Language = None
|
||||
Link = None
|
||||
Mirror = None
|
||||
Name = None
|
||||
Owner = Some (emptyUser "some-username")
|
||||
Private = None
|
||||
Website = None
|
||||
AllowRebase = None
|
||||
AllowMergeCommits = None
|
||||
AllowRebaseExplicit = None
|
||||
AllowRebaseUpdate = None
|
||||
AllowSquashMerge = None
|
||||
DefaultBranch = Some defaultBranch
|
||||
HasIssues = None
|
||||
HasProjects = None
|
||||
HasWiki = None
|
||||
HasPullRequests = None
|
||||
DefaultMergeStyle = None
|
||||
AdditionalProperties = Dictionary ()
|
||||
AvatarUrl = None
|
||||
CloneUrl = None
|
||||
CreatedAt = None
|
||||
DefaultAllowMaintainerEdit = None
|
||||
DefaultDeleteBranchAfterMerge = None
|
||||
ExternalTracker = None
|
||||
ExternalWiki = None
|
||||
ForksCount = None
|
||||
FullName = Some fullName
|
||||
HtmlUrl = None
|
||||
IgnoreWhitespaceConflicts = None
|
||||
InternalTracker = None
|
||||
LanguagesUrl = None
|
||||
MirrorInterval = None
|
||||
MirrorUpdated = None
|
||||
OpenIssuesCount = None
|
||||
OpenPrCounter = None
|
||||
OriginalUrl = None
|
||||
Parent = None
|
||||
Permissions = None
|
||||
ReleaseCounter = None
|
||||
RepoTransfer = None
|
||||
Size = None
|
||||
SshUrl = None
|
||||
StarsCount = None
|
||||
Template = None
|
||||
UpdatedAt = None
|
||||
WatchersCount = None
|
||||
}
|
||||
|
||||
type CustomArb () =
|
||||
static member UriGen = Gen.constant (Uri "http://example.com") |> Arb.fromGen
|
||||
|
||||
static member User : Arbitrary<GiteaClient.User> =
|
||||
static member User : Arbitrary<Gitea.User> =
|
||||
gen {
|
||||
let! active = Arb.generate<_>
|
||||
let! created = Arb.generate<_>
|
||||
let! description = Arb.generate<_>
|
||||
let! email = Arb.generate<_>
|
||||
let! id = Arb.generate<_>
|
||||
let! language = Arb.generate<_>
|
||||
let! location = Arb.generate<_>
|
||||
let! login = Arb.generate<_>
|
||||
let! restricted = Arb.generate<_>
|
||||
let! visibility = Arb.generate<_>
|
||||
let! website = Arb.generate<_>
|
||||
let! fullname = Arb.generate<_>
|
||||
let! isAdmin = Arb.generate<_>
|
||||
let! loginName = Arb.generate<_>
|
||||
let! prohibitLogin = Arb.generate<_>
|
||||
|
||||
return
|
||||
({ Types.emptyUser loginName with
|
||||
Active = active
|
||||
Created = created
|
||||
Description = description
|
||||
Email = email
|
||||
Id = id
|
||||
Language = language
|
||||
Location = location
|
||||
Login = login
|
||||
Restricted = restricted
|
||||
Visibility = visibility
|
||||
Website = website
|
||||
FullName = fullname
|
||||
IsAdmin = isAdmin
|
||||
ProhibitLogin = prohibitLogin
|
||||
}
|
||||
: GiteaClient.User)
|
||||
let user = Gitea.User ()
|
||||
let! a = Arb.generate<_>
|
||||
user.Active <- a
|
||||
let! a = Arb.generate<_>
|
||||
user.Created <- a
|
||||
let! a = Arb.generate<_>
|
||||
user.Description <- a
|
||||
let! a = Arb.generate<_>
|
||||
user.Email <- a
|
||||
let! a = Arb.generate<_>
|
||||
user.Id <- a
|
||||
let! a = Arb.generate<_>
|
||||
user.Language <- a
|
||||
let! a = Arb.generate<_>
|
||||
user.Location <- a
|
||||
let! a = Arb.generate<_>
|
||||
user.Login <- a
|
||||
let! a = Arb.generate<_>
|
||||
user.Restricted <- a
|
||||
let! a = Arb.generate<_>
|
||||
user.Visibility <- a
|
||||
let! a = Arb.generate<_>
|
||||
user.Website <- a
|
||||
let! a = Arb.generate<_>
|
||||
user.FullName <- a
|
||||
let! a = Arb.generate<_>
|
||||
user.IsAdmin <- a
|
||||
let! a = Arb.generate<_>
|
||||
user.LoginName <- a
|
||||
let! a = Arb.generate<_>
|
||||
user.ProhibitLogin <- a
|
||||
return user
|
||||
}
|
||||
|> Arb.fromGen
|
||||
|
||||
static member RepositoryGen : Arbitrary<GiteaClient.Repository> =
|
||||
static member RepositoryGen : Arbitrary<Gitea.Repository> =
|
||||
gen {
|
||||
let! archived = Arb.generate<_>
|
||||
let! description = Arb.generate<_>
|
||||
let! empty = Arb.generate<_>
|
||||
let! fork = Arb.generate<_>
|
||||
let! id = Arb.generate<_>
|
||||
let! isInternal = Arb.generate<_>
|
||||
let! language = Arb.generate<_>
|
||||
let! link = Arb.generate<_>
|
||||
let! mirror = Arb.generate<_>
|
||||
let! name = Arb.generate<_>
|
||||
let! fullName = Arb.generate<_>
|
||||
let! owner = Arb.generate<_>
|
||||
let! isPrivate = Arb.generate<_>
|
||||
let! website = Arb.generate<_>
|
||||
let! allowRebase = Arb.generate<_>
|
||||
let! allowMergeCommits = Arb.generate<_>
|
||||
let! allowRebaseExplicit = Arb.generate<_>
|
||||
let! allowRebaseUpdate = Arb.generate<_>
|
||||
let! allowSquashMerge = Arb.generate<_>
|
||||
let! defaultBranch = Arb.generate<_>
|
||||
let! hasIssues = Arb.generate<_>
|
||||
let! hasProjects = Arb.generate<_>
|
||||
let! hasWiki = Arb.generate<_>
|
||||
let! hasPullRequests = Arb.generate<_>
|
||||
let repo = Gitea.Repository ()
|
||||
let! a = Arb.generate<_>
|
||||
repo.Archived <- a
|
||||
let! a = Arb.generate<_>
|
||||
repo.Description <- a
|
||||
let! a = Arb.generate<_>
|
||||
repo.Empty <- a
|
||||
let! a = Arb.generate<_>
|
||||
repo.Fork <- a
|
||||
let! a = Arb.generate<_>
|
||||
repo.Id <- a
|
||||
let! a = Arb.generate<_>
|
||||
repo.Internal <- a
|
||||
let! a = Arb.generate<_>
|
||||
repo.Language <- a
|
||||
let! a = Arb.generate<_>
|
||||
repo.Link <- a
|
||||
let! a = Arb.generate<_>
|
||||
repo.Mirror <- a
|
||||
let! a = Arb.generate<_>
|
||||
repo.Name <- a
|
||||
let! a = Arb.generate<_>
|
||||
repo.Owner <- a
|
||||
let! a = Arb.generate<_>
|
||||
repo.Private <- a
|
||||
let! a = Arb.generate<_>
|
||||
repo.Website <- a
|
||||
let! a = Arb.generate<_>
|
||||
repo.AllowRebase <- a
|
||||
let! a = Arb.generate<_>
|
||||
repo.AllowMergeCommits <- a
|
||||
let! a = Arb.generate<_>
|
||||
repo.AllowRebaseExplicit <- a
|
||||
let! a = Arb.generate<_>
|
||||
repo.AllowRebaseUpdate <- a
|
||||
let! a = Arb.generate<_>
|
||||
repo.AllowSquashMerge <- a
|
||||
let! a = Arb.generate<_>
|
||||
repo.DefaultBranch <- a
|
||||
let! a = Arb.generate<_>
|
||||
repo.HasIssues <- a
|
||||
let! a = Arb.generate<_>
|
||||
repo.HasProjects <- a
|
||||
let! a = Arb.generate<_>
|
||||
repo.HasWiki <- a
|
||||
let! a = Arb.generate<_>
|
||||
repo.HasPullRequests <- a
|
||||
|
||||
let! mergeStyle =
|
||||
let! a =
|
||||
FSharpType.GetUnionCases typeof<MergeStyle>
|
||||
|> Array.map (fun uci -> FSharpValue.MakeUnion (uci, [||]) |> unbox<MergeStyle>)
|
||||
|> Gen.elements
|
||||
|
||||
let mergeStyle = (mergeStyle : MergeStyle).ToString ()
|
||||
|
||||
return
|
||||
({ Types.emptyRepo fullName defaultBranch with
|
||||
Archived = archived
|
||||
Description = Some description
|
||||
Empty = empty
|
||||
Fork = fork
|
||||
Id = id
|
||||
Internal = isInternal
|
||||
Language = language
|
||||
Link = link
|
||||
Mirror = mirror
|
||||
Name = Some name
|
||||
Owner = Some owner
|
||||
Private = isPrivate
|
||||
Website = website
|
||||
AllowRebase = allowRebase
|
||||
AllowMergeCommits = allowMergeCommits
|
||||
AllowRebaseExplicit = allowRebaseExplicit
|
||||
AllowRebaseUpdate = allowRebaseUpdate
|
||||
AllowSquashMerge = allowSquashMerge
|
||||
HasIssues = hasIssues
|
||||
HasProjects = hasProjects
|
||||
HasWiki = hasWiki
|
||||
HasPullRequests = hasPullRequests
|
||||
DefaultMergeStyle = Some mergeStyle
|
||||
AdditionalProperties = Dictionary ()
|
||||
}
|
||||
: GiteaClient.Repository)
|
||||
repo.DefaultMergeStyle <- MergeStyle.toString a
|
||||
return repo
|
||||
}
|
||||
|> Arb.fromGen
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<PackAsTool>true</PackAsTool>
|
||||
<PackageId>Gitea.Declarative</PackageId>
|
||||
<Authors>Patrick Stevens</Authors>
|
||||
@@ -32,7 +32,7 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Argu" Version="6.2.5" />
|
||||
<PackageReference Include="Argu" Version="6.1.1" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="7.0.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageReference Include="NJsonSchema" Version="10.9.0" />
|
||||
|
@@ -85,7 +85,7 @@ module Program =
|
||||
Error 127
|
||||
| Ok args ->
|
||||
|
||||
run args |> Async.RunSynchronously |> Ok
|
||||
run args |> Ok
|
||||
}
|
||||
|> command.Apply
|
||||
|> Result.cata id id
|
||||
|> Result.cata Async.RunSynchronously id
|
||||
|
@@ -63,7 +63,7 @@ module Reconcile =
|
||||
let logger = loggerProvider.CreateLogger "Gitea.Declarative"
|
||||
|
||||
use httpClient = Utils.createHttpClient args.GiteaHost args.GiteaAdminApiToken
|
||||
let client = GiteaClient.GiteaClient.make httpClient
|
||||
let client = Gitea.Client httpClient |> IGiteaClient.fromReal
|
||||
|
||||
logger.LogInformation "Checking users..."
|
||||
let! userErrors = Gitea.checkUsers config client
|
||||
|
@@ -50,7 +50,7 @@ module RefreshAuth =
|
||||
let run (args : RefreshAuthArgs) : Async<int> =
|
||||
async {
|
||||
use httpClient = Utils.createHttpClient args.GiteaHost args.GiteaAdminApiToken
|
||||
let client = GiteaClient.GiteaClient.make httpClient
|
||||
let client = Gitea.Client httpClient |> IGiteaClient.fromReal
|
||||
|
||||
use loggerProvider = Utils.createLoggerProvider ()
|
||||
let logger = loggerProvider.CreateLogger "Gitea.Declarative"
|
||||
@@ -58,7 +58,7 @@ module RefreshAuth =
|
||||
let! instructions = Gitea.toRefresh client
|
||||
|
||||
if args.DryRun then
|
||||
logger.LogInformation "Stopping due to --dry-run."
|
||||
logger.LogInformation ("Stopping due to --dry-run.")
|
||||
else
|
||||
do! Gitea.refreshAuth logger client args.GitHubApiToken instructions
|
||||
|
||||
|
@@ -5,11 +5,11 @@ open Gitea.Declarative
|
||||
|
||||
type private ServerState =
|
||||
{
|
||||
Users : Map<User, GiteaClient.CreateUserOption>
|
||||
Users : Map<User, Gitea.CreateUserOption>
|
||||
Repos : (User * Repo) list
|
||||
}
|
||||
|
||||
member this.WithUser (create : GiteaClient.CreateUserOption) : ServerState =
|
||||
member this.WithUser (create : Gitea.CreateUserOption) : ServerState =
|
||||
let user = User create.Username
|
||||
|
||||
match Map.tryFind user this.Users with
|
||||
@@ -27,7 +27,7 @@ type private ServerState =
|
||||
Repos = []
|
||||
}
|
||||
|
||||
type private ServerMessage = | AddUser of GiteaClient.CreateUserOption * AsyncReplyChannel<unit>
|
||||
type private ServerMessage = | AddUser of Gitea.CreateUserOption * AsyncReplyChannel<unit>
|
||||
|
||||
type Server =
|
||||
private
|
||||
@@ -51,18 +51,57 @@ module Client =
|
||||
return! loop (state.WithUser user) mailbox
|
||||
}
|
||||
|
||||
let make () : Server * GiteaClient.IGiteaClient =
|
||||
let make () : Server * IGiteaClient =
|
||||
let server = MailboxProcessor.Start (loop ServerState.Empty)
|
||||
|
||||
let client =
|
||||
{ GiteaClient.GiteaClientMock.Empty with
|
||||
AdminCreateUser =
|
||||
fun (createUserOption, _ct) ->
|
||||
async {
|
||||
let! () = server.PostAndAsyncReply (fun reply -> AddUser (createUserOption, reply))
|
||||
return Operations.createdUser createUserOption
|
||||
}
|
||||
|> Async.StartAsTask
|
||||
{ new IGiteaClient with
|
||||
member _.AdminGetAllUsers (page, limit) = failwith "Not implemented"
|
||||
|
||||
member _.AdminCreateUser createUserOption =
|
||||
async {
|
||||
let! () = server.PostAndAsyncReply (fun reply -> AddUser (createUserOption, reply))
|
||||
return Operations.createdUser createUserOption
|
||||
}
|
||||
|> Async.StartAsTask
|
||||
|
||||
member _.AdminDeleteUser user = failwith "Not implemented"
|
||||
|
||||
member _.AdminEditUser (user, editUserOption) = failwith "Not implemented"
|
||||
|
||||
member _.AdminCreateRepo (user, createRepoOption) = failwith "Not implemented"
|
||||
|
||||
member _.UserListRepos (user, page, count) = failwith "Not implemented"
|
||||
|
||||
member _.RepoAddPushMirror (user, repo, createPushMirrorOption) = failwith "Not implemented"
|
||||
|
||||
member _.RepoDeletePushMirror (user, repo, remoteName) = failwith "Not implemented"
|
||||
|
||||
member _.RepoListPushMirrors (loginName, userName, page, count) = failwith "Not implemented"
|
||||
|
||||
member _.RepoListBranchProtection (loginName, userName) = failwith "Not implemented"
|
||||
|
||||
member _.RepoDeleteBranchProtection (user, repo, branch) = failwith "Not implemented"
|
||||
|
||||
member _.RepoCreateBranchProtection (user, repo, createBranchProtectionOption) =
|
||||
failwith "Not implemented"
|
||||
|
||||
member _.RepoEditBranchProtection (user, repo, branch, editBranchProtectionOption) =
|
||||
failwith "Not implemented"
|
||||
|
||||
member _.RepoMigrate migrateRepoOptions = failwith "Not implemented"
|
||||
|
||||
member _.RepoGet (user, repo) = failwith "Not implemented"
|
||||
|
||||
member _.RepoDelete (user, repo) = failwith "Not implemented"
|
||||
|
||||
member _.RepoEdit (user, repo, editRepoOption) = failwith "Not implemented"
|
||||
|
||||
member _.RepoListCollaborators (loginName, userName, page, count) = failwith "Not implemented"
|
||||
|
||||
member _.RepoAddCollaborator (user, repo, collaborator) = failwith "Not implemented"
|
||||
|
||||
member _.RepoDeleteCollaborator (user, repo, collaborator) = failwith "Not implemented"
|
||||
}
|
||||
|
||||
Server server, client
|
||||
|
@@ -21,3 +21,108 @@ module Types =
|
||||
type Repo =
|
||||
| GitHubMirror of Uri
|
||||
| NativeRepo of NativeRepo
|
||||
|
||||
/// Allows us to use handy record-updating syntax.
|
||||
/// (I have a considerable dislike of Moq and friends.)
|
||||
type GiteaClientMock =
|
||||
{
|
||||
AdminGetAllUsers : int64 option * int64 option -> Gitea.User array Task
|
||||
AdminCreateUser : Gitea.CreateUserOption -> Gitea.User Task
|
||||
AdminDeleteUser : string -> unit Task
|
||||
AdminEditUser : string * Gitea.EditUserOption -> Gitea.User Task
|
||||
AdminCreateRepo : string * Gitea.CreateRepoOption -> Gitea.Repository Task
|
||||
|
||||
UserListRepos : string * int64 option * int64 option -> Gitea.Repository array Task
|
||||
|
||||
RepoAddPushMirror : string * string * Gitea.CreatePushMirrorOption -> Gitea.PushMirror Task
|
||||
RepoDeletePushMirror : string * string * string -> unit Task
|
||||
RepoListPushMirrors : string * string * int64 option * int64 option -> Gitea.PushMirror array Task
|
||||
|
||||
RepoListBranchProtection : string * string -> Gitea.BranchProtection array Task
|
||||
RepoDeleteBranchProtection : string * string * string -> unit Task
|
||||
RepoCreateBranchProtection : string * string * Gitea.CreateBranchProtectionOption -> Gitea.BranchProtection Task
|
||||
RepoEditBranchProtection :
|
||||
string * string * string * Gitea.EditBranchProtectionOption -> Gitea.BranchProtection Task
|
||||
|
||||
RepoMigrate : Gitea.MigrateRepoOptions -> Gitea.Repository Task
|
||||
RepoGet : string * string -> Gitea.Repository Task
|
||||
RepoDelete : string * string -> unit Task
|
||||
RepoEdit : string * string * Gitea.EditRepoOption -> Gitea.Repository Task
|
||||
|
||||
RepoListCollaborators : string * string * int64 option * int64 option -> Gitea.User array Task
|
||||
RepoAddCollaborator : string * string * string -> unit Task
|
||||
RepoDeleteCollaborator : string * string * string -> unit Task
|
||||
}
|
||||
|
||||
static member Unimplemented =
|
||||
{
|
||||
AdminGetAllUsers = fun _ -> failwith "Unimplemented"
|
||||
AdminCreateUser = fun _ -> failwith "Unimplemented"
|
||||
AdminDeleteUser = fun _ -> failwith "Unimplemented"
|
||||
AdminEditUser = fun _ -> failwith "Unimplemented"
|
||||
AdminCreateRepo = fun _ -> failwith "Unimplemented"
|
||||
|
||||
UserListRepos = fun _ -> failwith "Unimplemented"
|
||||
|
||||
RepoAddPushMirror = fun _ -> failwith "Unimplemented"
|
||||
RepoDeletePushMirror = fun _ -> failwith "Unimplemented"
|
||||
RepoListPushMirrors = fun _ -> failwith "Unimplemented"
|
||||
|
||||
RepoListBranchProtection = fun _ -> failwith "Unimplemented"
|
||||
RepoDeleteBranchProtection = fun _ -> failwith "Unimplemented"
|
||||
RepoCreateBranchProtection = fun _ -> failwith "Unimplemented"
|
||||
RepoEditBranchProtection = fun _ -> failwith "Unimplemented"
|
||||
|
||||
RepoMigrate = fun _ -> failwith "Unimplemented"
|
||||
RepoGet = fun _ -> failwith "Unimplemented"
|
||||
RepoDelete = fun _ -> failwith "Unimplemented"
|
||||
RepoEdit = fun _ -> failwith "Unimplemented"
|
||||
|
||||
RepoListCollaborators = fun _ -> failwith "Unimplemented"
|
||||
RepoAddCollaborator = fun _ -> failwith "Unimplemented"
|
||||
RepoDeleteCollaborator = fun _ -> failwith "Unimplemented"
|
||||
}
|
||||
|
||||
interface IGiteaClient with
|
||||
member this.AdminGetAllUsers (page, limit) = this.AdminGetAllUsers (page, limit)
|
||||
member this.AdminCreateUser user = this.AdminCreateUser user
|
||||
member this.AdminDeleteUser user = this.AdminDeleteUser user
|
||||
member this.AdminEditUser (user, option) = this.AdminEditUser (user, option)
|
||||
member this.AdminCreateRepo (user, option) = this.AdminCreateRepo (user, option)
|
||||
|
||||
member this.UserListRepos (user, page, count) = this.UserListRepos (user, page, count)
|
||||
|
||||
member this.RepoAddPushMirror (user, repo, options) =
|
||||
this.RepoAddPushMirror (user, repo, options)
|
||||
|
||||
member this.RepoListPushMirrors (loginName, userName, page, count) =
|
||||
this.RepoListPushMirrors (loginName, userName, page, count)
|
||||
|
||||
member this.RepoDeletePushMirror (loginName, userName, remoteName) =
|
||||
this.RepoDeletePushMirror (loginName, userName, remoteName)
|
||||
|
||||
member this.RepoListBranchProtection (login, user) =
|
||||
this.RepoListBranchProtection (login, user)
|
||||
|
||||
member this.RepoDeleteBranchProtection (user, repo, branch) =
|
||||
this.RepoDeleteBranchProtection (user, repo, branch)
|
||||
|
||||
member this.RepoCreateBranchProtection (user, repo, options) =
|
||||
this.RepoCreateBranchProtection (user, repo, options)
|
||||
|
||||
member this.RepoEditBranchProtection (user, repo, branch, edit) =
|
||||
this.RepoEditBranchProtection (user, repo, branch, edit)
|
||||
|
||||
member this.RepoMigrate options = this.RepoMigrate options
|
||||
member this.RepoGet (user, repo) = this.RepoGet (user, repo)
|
||||
member this.RepoDelete (user, repo) = this.RepoDelete (user, repo)
|
||||
member this.RepoEdit (user, repo, options) = this.RepoEdit (user, repo, options)
|
||||
|
||||
member this.RepoListCollaborators (login, user, page, count) =
|
||||
this.RepoListCollaborators (login, user, page, count)
|
||||
|
||||
member this.RepoAddCollaborator (user, repo, collaborator) =
|
||||
this.RepoAddCollaborator (user, repo, collaborator)
|
||||
|
||||
member this.RepoDeleteCollaborator (user, repo, collaborator) =
|
||||
this.RepoDeleteCollaborator (user, repo, collaborator)
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>netstandard2.1</TargetFramework>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<IsPackable>false</IsPackable>
|
||||
</PropertyGroup>
|
||||
|
@@ -1,33 +1,18 @@
|
||||
namespace Gitea.InMemory
|
||||
|
||||
open System.Collections.Generic
|
||||
open Gitea.Declarative
|
||||
|
||||
[<RequireQualifiedAccess>]
|
||||
module Operations =
|
||||
let createdUser (createUserOption : GiteaClient.CreateUserOption) : GiteaClient.User =
|
||||
let result : GiteaClient.User =
|
||||
{
|
||||
AdditionalProperties = Dictionary ()
|
||||
Active = None
|
||||
AvatarUrl = None
|
||||
Created = None
|
||||
Description = None
|
||||
Email = Some createUserOption.Email
|
||||
FollowersCount = None
|
||||
FollowingCount = None
|
||||
FullName = createUserOption.FullName
|
||||
Id = None
|
||||
IsAdmin = None
|
||||
Language = None
|
||||
LastLogin = None
|
||||
Location = None
|
||||
Login = None
|
||||
LoginName = createUserOption.LoginName
|
||||
ProhibitLogin = failwith "todo"
|
||||
Restricted = createUserOption.Restricted
|
||||
StarredReposCount = None
|
||||
Visibility = createUserOption.Visibility
|
||||
Website = None
|
||||
}
|
||||
let createdUser (createUserOption : Gitea.CreateUserOption) : Gitea.User =
|
||||
let result = Gitea.User ()
|
||||
result.Email <- createUserOption.Email
|
||||
result.Restricted <- createUserOption.Restricted
|
||||
// TODO: what is this username used for anyway
|
||||
// result.LoginName <- createUserOption.Username
|
||||
result.Visibility <- createUserOption.Visibility
|
||||
result.Created <- createUserOption.CreatedAt
|
||||
result.FullName <- createUserOption.FullName
|
||||
result.LoginName <- createUserOption.LoginName
|
||||
|
||||
result
|
||||
|
@@ -12,8 +12,6 @@ This is a small project to allow you to specify a [Gitea](https://github.com/go-
|
||||
* Pull request configuration (e.g. whether rebase-merges are allowed, etc)
|
||||
* Collaborators
|
||||
* Reconciliation of differences between configuration and reality in the above
|
||||
* Note that deleting a line of configuration will generally simply take that property out of declarative management.
|
||||
It does *not* return the configured property to its default value. Explicit is better than implicit.
|
||||
* Deletion of repositories, guarded by the `"deleted": true` configuration
|
||||
|
||||
# Arguments
|
||||
@@ -33,7 +31,7 @@ See the [Demos file](./docs/demos.md).
|
||||
|
||||
# Development
|
||||
|
||||
To upgrade the NuGet dependencies in the flake, run `nix build .#default.passthru.fetch-deps && ./result` and copy the resulting file into `nix/deps.nix`.
|
||||
To upgrade the NuGet dependencies in the flake, run `nix build .#fetchDeps` and copy the resulting file into `nix/deps.nix`.
|
||||
|
||||
## Formatting
|
||||
|
||||
|
12
flake.lock
generated
12
flake.lock
generated
@@ -5,11 +5,11 @@
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -20,11 +20,11 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1744868846,
|
||||
"narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=",
|
||||
"lastModified": 1720687749,
|
||||
"narHash": "sha256-nqJ+iK/zyqCJ/YShqCpZ2cJKE1UtjZIEUWLUFZqvxcA=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c",
|
||||
"rev": "6af55cb91ca2005516b9562f707bb99c8f79bf77",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
14
flake.nix
14
flake.nix
@@ -17,8 +17,8 @@
|
||||
projectFile = "./Gitea.Declarative/Gitea.Declarative.fsproj";
|
||||
testProjectFile = "./Gitea.Declarative.Test/Gitea.Declarative.Test.fsproj";
|
||||
pname = "gitea-repo-config";
|
||||
dotnet-sdk = pkgs.dotnetCorePackages.sdk_9_0;
|
||||
dotnet-runtime = pkgs.dotnetCorePackages.runtime_9_0;
|
||||
dotnet-sdk = pkgs.dotnet-sdk_8;
|
||||
dotnet-runtime = pkgs.dotnetCorePackages.runtime_8_0;
|
||||
version = "0.1";
|
||||
dotnetTool = toolName: toolVersion: hash:
|
||||
pkgs.stdenvNoCC.mkDerivation rec {
|
||||
@@ -29,7 +29,7 @@
|
||||
pname = name;
|
||||
version = version;
|
||||
hash = hash;
|
||||
installPhase = ''mkdir -p $out/bin && cp -r tools/*/any/* $out/bin'';
|
||||
installPhase = ''mkdir -p $out/bin && cp -r tools/net6.0/any/* $out/bin'';
|
||||
};
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
@@ -44,14 +44,12 @@
|
||||
inherit version pname projectFile testProjectFile dotnet-sdk dotnet-runtime;
|
||||
name = "gitea-repo-config";
|
||||
src = ./.;
|
||||
nugetDeps = ./nix/deps.json; # `nix build .#default.fetch-deps && ./result nix/deps.json`
|
||||
nugetDeps = ./nix/deps.nix; # `nix build .#default.passthru.fetch-deps && ./result` and put the result here
|
||||
doCheck = true;
|
||||
};
|
||||
in {
|
||||
packages = let
|
||||
deps = builtins.fromJSON (builtins.readFile ./nix/deps.json);
|
||||
in {
|
||||
fantomas = dotnetTool "fantomas" (builtins.fromJSON (builtins.readFile ./.config/dotnet-tools.json)).tools.fantomas.version (builtins.head (builtins.filter (elem: elem.pname == "fantomas") deps)).hash;
|
||||
packages = {
|
||||
fantomas = dotnetTool "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;
|
||||
default = default;
|
||||
};
|
||||
apps = {
|
||||
|
892
nix/deps.json
892
nix/deps.json
@@ -1,892 +0,0 @@
|
||||
[
|
||||
{
|
||||
"pname": "Argu",
|
||||
"version": "6.2.5",
|
||||
"hash": "sha256-5HcZcvco4e8+hgLhzlxk7ZmFVLtZL9LVr7LbmXsLmNU="
|
||||
},
|
||||
{
|
||||
"pname": "fantomas",
|
||||
"version": "6.3.15",
|
||||
"hash": "sha256-Gjw7MxjUNckMWSfnOye4UTe5fZWnor6RHCls3PNsuG8="
|
||||
},
|
||||
{
|
||||
"pname": "Fantomas.Core",
|
||||
"version": "6.1.1",
|
||||
"hash": "sha256-FcTLHQFvKkQY/kV08jhhy/St/+FmXpp3epp/R3zUXMA="
|
||||
},
|
||||
{
|
||||
"pname": "Fantomas.FCS",
|
||||
"version": "6.1.1",
|
||||
"hash": "sha256-NuZ8msPEHYA8T3EYREB28F1RcNgUU8V54eg2+UttYxw="
|
||||
},
|
||||
{
|
||||
"pname": "FsCheck",
|
||||
"version": "2.16.6",
|
||||
"hash": "sha256-1hR2SaJTkqBzU3D955MvLNVzkQHkx0Z/QzOXZfzk2Zw="
|
||||
},
|
||||
{
|
||||
"pname": "FSharp.Core",
|
||||
"version": "6.0.1",
|
||||
"hash": "sha256-Ehsgt3nCJijpaVuJguC1TPVEKSkJd6PSc07D2ZQSemI="
|
||||
},
|
||||
{
|
||||
"pname": "FSharp.Core",
|
||||
"version": "9.0.202",
|
||||
"hash": "sha256-64Gub0qemmCoMa1tDus6TeTuB1+5sHfE6KD2j4o84mA="
|
||||
},
|
||||
{
|
||||
"pname": "FSharp.SystemTextJson",
|
||||
"version": "0.19.13",
|
||||
"hash": "sha256-iEHJJoH6FfE1Qm5VmlOANVymdbWHU2/Y4pL4if7vMTU="
|
||||
},
|
||||
{
|
||||
"pname": "FsUnit",
|
||||
"version": "6.0.0",
|
||||
"hash": "sha256-q87WQf6MqGhzvaQ7WkkUlCdoE94DY0CD5PaXEj64A6M="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.AspNetCore.App.Ref",
|
||||
"version": "6.0.36",
|
||||
"hash": "sha256-9jDkWbjw/nd8yqdzVTagCuqr6owJ/DUMi4BlUZT4hWU="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.AspNetCore.App.Runtime.linux-arm64",
|
||||
"version": "6.0.36",
|
||||
"hash": "sha256-JQULJyF0ivLoUU1JaFfK/HHg+/qzpN7V2RR2Cc+WlQ4="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.AspNetCore.App.Runtime.linux-x64",
|
||||
"version": "6.0.36",
|
||||
"hash": "sha256-zUsVIpV481vMLAXaLEEUpEMA9/f1HGOnvaQnaWdzlyY="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.AspNetCore.App.Runtime.osx-arm64",
|
||||
"version": "6.0.36",
|
||||
"hash": "sha256-2seqZcz0JeUjkzh3QcGa9TcJ4LUafpFjTRk+Nm8T6T0="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.AspNetCore.App.Runtime.osx-x64",
|
||||
"version": "6.0.36",
|
||||
"hash": "sha256-yxLafxiBKkvfkDggPk0P9YZIHBkDJOsFTO7/V9mEHuU="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Build.Tasks.Git",
|
||||
"version": "8.0.0",
|
||||
"hash": "sha256-vX6/kPij8vNAu8f7rrvHHhPrNph20IcufmrBgZNxpQA="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.CodeCoverage",
|
||||
"version": "17.10.0",
|
||||
"hash": "sha256-yQFwqVChRtIRpbtkJr92JH2i+O7xn91NGbYgnKs8G2g="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.CSharp",
|
||||
"version": "4.0.1",
|
||||
"hash": "sha256-0huoqR2CJ3Z9Q2peaKD09TV3E6saYSqDGZ290K8CrH8="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.CSharp",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-a3dAiPaVuky0wpcHmpTVtAQJNGZ2v91/oArA+dpJgj8="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.Configuration",
|
||||
"version": "7.0.0",
|
||||
"hash": "sha256-DaTP2X8zewdBfVbuy8rKvaIOWfnUrqVzpTRR3OnLL1g="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.Configuration.Abstractions",
|
||||
"version": "7.0.0",
|
||||
"hash": "sha256-QwX//PcURR6aGhH1QFkVmSayqnHaCsFPeE9d8J9nSKs="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.Configuration.Binder",
|
||||
"version": "7.0.0",
|
||||
"hash": "sha256-dIFAourb2UlKb8YKfJDlmMzGUSBTWo5gpObos29YLuI="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.DependencyInjection",
|
||||
"version": "7.0.0",
|
||||
"hash": "sha256-N2DHyHiaNvYDQ77f8HI0gE0uIX2aj/rvejVGdCXRP4g="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
|
||||
"version": "7.0.0",
|
||||
"hash": "sha256-55lsa2QdX1CJn1TpW1vTnkvbGXKCeE9P0O6AkW49LaA="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.Logging",
|
||||
"version": "7.0.0",
|
||||
"hash": "sha256-rr/NXIZ/3FG5FYGrHD7iIIr12AksP4CnfUy1YvEdDa8="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.Logging.Abstractions",
|
||||
"version": "7.0.0",
|
||||
"hash": "sha256-uoMkX/TnwP0YabThacTMmyxdc9itQp73CN7xEFFox74="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.Logging.Configuration",
|
||||
"version": "7.0.0",
|
||||
"hash": "sha256-RCzW63KmAzjCBVzUVY2js05N9BHA5/AG7Dx7/veFrrg="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.Logging.Console",
|
||||
"version": "7.0.0",
|
||||
"hash": "sha256-TmE0Ghra88EusrXPMCvWZM4Nep4SGQDm32nTPaqIGdU="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.Options",
|
||||
"version": "7.0.0",
|
||||
"hash": "sha256-pj9I/2HpCU7bLu002/Bb5NF+ofUrJ3IyH7yVqfP8IC0="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.Options.ConfigurationExtensions",
|
||||
"version": "7.0.0",
|
||||
"hash": "sha256-8hYZXhb/JJHrA86EdzLkP5gv50RWJIjr20LBD2C+PtI="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.Primitives",
|
||||
"version": "7.0.0",
|
||||
"hash": "sha256-AGnfNNDvZDGZ0Er9JQxeyLoUbVH+jfXF3anFr12qk6w="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.NET.Test.Sdk",
|
||||
"version": "17.10.0",
|
||||
"hash": "sha256-rkHIqB2mquNXF89XBTFpUL2z5msjTBsOcyjSBCh36I0="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.NETCore.App.Host.linux-arm64",
|
||||
"version": "6.0.36",
|
||||
"hash": "sha256-9lC/LYnthYhjkWWz2kkFCvlA5LJOv11jdt59SDnpdy0="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.NETCore.App.Host.linux-x64",
|
||||
"version": "6.0.36",
|
||||
"hash": "sha256-VFRDzx7LJuvI5yzKdGmw/31NYVbwHWPKQvueQt5xc10="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.NETCore.App.Host.osx-arm64",
|
||||
"version": "6.0.36",
|
||||
"hash": "sha256-DaSWwYACJGolEBuMhzDVCj/rQTdDt061xCVi+gyQnuo="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.NETCore.App.Host.osx-x64",
|
||||
"version": "6.0.36",
|
||||
"hash": "sha256-FrRny9EI6HKCKQbu6mcLj5w4ooSRrODD4Vj2ZMGnMd4="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.NETCore.App.Ref",
|
||||
"version": "6.0.36",
|
||||
"hash": "sha256-9LZgVoIFF8qNyUu8kdJrYGLutMF/cL2K82HN2ywwlx8="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.NETCore.App.Runtime.linux-arm64",
|
||||
"version": "6.0.36",
|
||||
"hash": "sha256-k3rxvUhCEU0pVH8KgEMtkPiSOibn+nBh+0zT2xIfId8="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.NETCore.App.Runtime.linux-x64",
|
||||
"version": "6.0.36",
|
||||
"hash": "sha256-U8wJ2snSDFqeAgDVLXjnniidC7Cr5aJ1/h/BMSlyu0c="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.NETCore.App.Runtime.osx-arm64",
|
||||
"version": "6.0.36",
|
||||
"hash": "sha256-UfLcrL2Gj/OLz0s92Oo+OCJeDpZFAcQLPLiSNND8D5Y="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.NETCore.App.Runtime.osx-x64",
|
||||
"version": "6.0.36",
|
||||
"hash": "sha256-0xIJYFzxdMcnCj3wzkFRQZSnQcPHzPHMzePRIOA3oJs="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.NETCore.Platforms",
|
||||
"version": "1.1.0",
|
||||
"hash": "sha256-FeM40ktcObQJk4nMYShB61H/E8B7tIKfl9ObJ0IOcCM="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.NETCore.Platforms",
|
||||
"version": "1.1.1",
|
||||
"hash": "sha256-8hLiUKvy/YirCWlFwzdejD2Db3DaXhHxT7GSZx/znJg="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.NETCore.Targets",
|
||||
"version": "1.1.0",
|
||||
"hash": "sha256-0AqQ2gMS8iNlYkrD+BxtIg7cXMnr9xZHtKAuN4bjfaQ="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.NETCore.Targets",
|
||||
"version": "1.1.3",
|
||||
"hash": "sha256-WLsf1NuUfRWyr7C7Rl9jiua9jximnVvzy6nk2D2bVRc="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.SourceLink.Common",
|
||||
"version": "8.0.0",
|
||||
"hash": "sha256-AfUqleVEqWuHE7z2hNiwOLnquBJ3tuYtbkdGMppHOXc="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.SourceLink.GitHub",
|
||||
"version": "8.0.0",
|
||||
"hash": "sha256-hNTkpKdCLY5kIuOmznD1mY+pRdJ0PKu2HypyXog9vb0="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.TestPlatform.ObjectModel",
|
||||
"version": "17.10.0",
|
||||
"hash": "sha256-3YjVGK2zEObksBGYg8b/CqoJgLQ1jUv4GCWNjDhLRh4="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.TestPlatform.TestHost",
|
||||
"version": "17.10.0",
|
||||
"hash": "sha256-+yzP3FY6WoOosSpYnB7duZLhOPUZMQYy8zJ1d3Q4hK4="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Win32.Primitives",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-mBNDmPXNTW54XLnPAUwBRvkIORFM7/j0D0I2SyQPDEg="
|
||||
},
|
||||
{
|
||||
"pname": "Myriad.Core",
|
||||
"version": "0.8.3",
|
||||
"hash": "sha256-vBOxfq8QriX/yUtaXN69rEQaY/psRNJWxqATLidrt2g="
|
||||
},
|
||||
{
|
||||
"pname": "Myriad.Sdk",
|
||||
"version": "0.8.3",
|
||||
"hash": "sha256-7O397WKhskKOvE3MkJT37BvxorDWngDR6gTUogtDZ2M="
|
||||
},
|
||||
{
|
||||
"pname": "Namotion.Reflection",
|
||||
"version": "2.1.2",
|
||||
"hash": "sha256-yLOGrEnHbXAxwTNLKsaibFrdbFLoJPpiaGjT0NYWD54="
|
||||
},
|
||||
{
|
||||
"pname": "Nerdbank.GitVersioning",
|
||||
"version": "3.8.38-alpha",
|
||||
"hash": "sha256-gPMrVbjOZxXoofczF/pn6eVkLhjVSJIyQrLO2oljrDc="
|
||||
},
|
||||
{
|
||||
"pname": "Newtonsoft.Json",
|
||||
"version": "13.0.1",
|
||||
"hash": "sha256-K2tSVW4n4beRPzPu3rlVaBEMdGvWSv/3Q1fxaDh4Mjo="
|
||||
},
|
||||
{
|
||||
"pname": "Newtonsoft.Json",
|
||||
"version": "13.0.3",
|
||||
"hash": "sha256-hy/BieY4qxBWVVsDqqOPaLy1QobiIapkbrESm6v2PHc="
|
||||
},
|
||||
{
|
||||
"pname": "Newtonsoft.Json",
|
||||
"version": "9.0.1",
|
||||
"hash": "sha256-mYCBrgUhIJFzRuLLV9SIiIFHovzfR8Uuqfg6e08EnlU="
|
||||
},
|
||||
{
|
||||
"pname": "NJsonSchema",
|
||||
"version": "10.9.0",
|
||||
"hash": "sha256-7RPZmR8k9zKKMjnIx0Ci2TvQ9iYfN1moxHXQfTp7O5Q="
|
||||
},
|
||||
{
|
||||
"pname": "NUnit",
|
||||
"version": "4.1.0",
|
||||
"hash": "sha256-srzj0lf2ReKw41TnigZwf8rqKKNzGRRVrgN3hR/vRjo="
|
||||
},
|
||||
{
|
||||
"pname": "NUnit3TestAdapter",
|
||||
"version": "4.5.0",
|
||||
"hash": "sha256-ER3ogl0L5FYyc6pVVPY1ch+AQxG/WgFcnWECnYQJPes="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.any.System.Collections",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-4PGZqyWhZ6/HCTF2KddDsbmTTjxs2oW79YfkberDZS8="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.any.System.Diagnostics.Tracing",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-dsmTLGvt8HqRkDWP8iKVXJCS+akAzENGXKPV18W2RgI="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.any.System.Globalization",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-PaiITTFI2FfPylTEk7DwzfKeiA/g/aooSU1pDcdwWLU="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.any.System.Globalization.Calendars",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-AYh39tgXJVFu8aLi9Y/4rK8yWMaza4S4eaxjfcuEEL4="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.any.System.IO",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-vej7ySRhyvM3pYh/ITMdC25ivSd0WLZAaIQbYj/6HVE="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.any.System.Reflection",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-ns6f++lSA+bi1xXgmW1JkWFb2NaMD+w+YNTfMvyAiQk="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.any.System.Reflection.Extensions",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-Y2AnhOcJwJVYv7Rp6Jz6ma0fpITFqJW+8rsw106K2X8="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.any.System.Reflection.Primitives",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-LkPXtiDQM3BcdYkAm5uSNOiz3uF4J45qpxn5aBiqNXQ="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.any.System.Resources.ResourceManager",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-9EvnmZslLgLLhJ00o5MWaPuJQlbUFcUF8itGQNVkcQ4="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.any.System.Runtime",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-qwhNXBaJ1DtDkuRacgHwnZmOZ1u9q7N8j0cWOLYOELM="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.any.System.Runtime.Handles",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-PQRACwnSUuxgVySO1840KvqCC9F8iI9iTzxNW0RcBS4="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.any.System.Runtime.InteropServices",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-Kaw5PnLYIiqWbsoF3VKJhy7pkpoGsUwn4ZDCKscbbzA="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.any.System.Text.Encoding",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-Q18B9q26MkWZx68exUfQT30+0PGmpFlDgaF0TnaIGCs="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.any.System.Text.Encoding.Extensions",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-6MYj0RmLh4EVqMtO/MRqBi0HOn5iG4x9JimgCCJ+EFM="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.any.System.Threading.Tasks",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-agdOM0NXupfHbKAQzQT8XgbI9B8hVEh+a/2vqeHctg4="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl",
|
||||
"version": "4.3.2",
|
||||
"hash": "sha256-EbnOqPOrAgI9eNheXLR++VnY4pHzMsEKw1dFPJ/Fl2c="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl",
|
||||
"version": "4.3.2",
|
||||
"hash": "sha256-mVg02TNvJc1BuHU03q3fH3M6cMgkKaQPBxraSHl/Btg="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl",
|
||||
"version": "4.3.2",
|
||||
"hash": "sha256-g9Uiikrl+M40hYe0JMlGHe/lrR0+nN05YF64wzLmBBA="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.native.System",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-ZBZaodnjvLXATWpXXakFgcy6P+gjhshFXmglrL5xD5Y="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.native.System.Net.Http",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-c556PyheRwpYhweBjSfIwEyZHnAUB8jWioyKEcp/2dg="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.native.System.Security.Cryptography.Apple",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-2IhBv0i6pTcOyr8FFIyfPEaaCHUmJZ8DYwLUwJ+5waw="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.native.System.Security.Cryptography.OpenSsl",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-Jy01KhtcCl2wjMpZWH+X3fhHcVn+SyllWFY8zWlz/6I="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.native.System.Security.Cryptography.OpenSsl",
|
||||
"version": "4.3.2",
|
||||
"hash": "sha256-xqF6LbbtpzNC9n1Ua16PnYgXHU0LvblEROTfK4vIxX8="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl",
|
||||
"version": "4.3.2",
|
||||
"hash": "sha256-aJBu6Frcg6webvzVcKNoUP1b462OAqReF2giTSyBzCQ="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl",
|
||||
"version": "4.3.2",
|
||||
"hash": "sha256-Mpt7KN2Kq51QYOEVesEjhWcCGTqWckuPf8HlQ110qLY="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-serkd4A7F6eciPiPJtUyJyxzdAtupEcWIZQ9nptEzIM="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl",
|
||||
"version": "4.3.2",
|
||||
"hash": "sha256-JvMltmfVC53mCZtKDHE69G3RT6Id28hnskntP9MMP9U="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl",
|
||||
"version": "4.3.2",
|
||||
"hash": "sha256-QfFxWTVRNBhN4Dm1XRbCf+soNQpy81PsZed3x6op/bI="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl",
|
||||
"version": "4.3.2",
|
||||
"hash": "sha256-EaJHVc9aDZ6F7ltM2JwlIuiJvqM67CKRq682iVSo+pU="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl",
|
||||
"version": "4.3.2",
|
||||
"hash": "sha256-PHR0+6rIjJswn89eoiWYY1DuU8u6xRJLrtjykAMuFmA="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl",
|
||||
"version": "4.3.2",
|
||||
"hash": "sha256-LFkh7ua7R4rI5w2KGjcHlGXLecsncCy6kDXLuy4qD/Q="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.unix.Microsoft.Win32.Primitives",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-LZb23lRXzr26tRS5aA0xyB08JxiblPDoA7HBvn6awXg="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.unix.System.Diagnostics.Debug",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-ReoazscfbGH+R6s6jkg5sIEHWNEvjEoHtIsMbpc7+tI="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.unix.System.IO.FileSystem",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-Pf4mRl6YDK2x2KMh0WdyNgv0VUNdSKVDLlHqozecy5I="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.unix.System.Net.Primitives",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-pHJ+I6i16MV6m77uhTC6GPY6jWGReE3SSP3fVB59ti0="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.unix.System.Private.Uri",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-c5tXWhE/fYbJVl9rXs0uHh3pTsg44YD1dJvyOA0WoMs="
|
||||
},
|
||||
{
|
||||
"pname": "runtime.unix.System.Runtime.Extensions",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-l8S9gt6dk3qYG6HYonHtdlYtBKyPb29uQ6NDjmrt3V4="
|
||||
},
|
||||
{
|
||||
"pname": "SwaggerProvider",
|
||||
"version": "1.0.1",
|
||||
"hash": "sha256-zCfTEXZStDfoSNkMf2EMs1uZmX3GxHLbjTqmBEebSyk="
|
||||
},
|
||||
{
|
||||
"pname": "System.Buffers",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-XqZWb4Kd04960h4U9seivjKseGA/YEIpdplfHYHQ9jk="
|
||||
},
|
||||
{
|
||||
"pname": "System.Collections",
|
||||
"version": "4.0.11",
|
||||
"hash": "sha256-puoFMkx4Z55C1XPxNw3np8nzNGjH+G24j43yTIsDRL0="
|
||||
},
|
||||
{
|
||||
"pname": "System.Collections",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-afY7VUtD6w/5mYqrce8kQrvDIfS2GXDINDh73IjxJKc="
|
||||
},
|
||||
{
|
||||
"pname": "System.Collections.Concurrent",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-KMY5DfJnDeIsa13DpqvyN8NkReZEMAFnlmNglVoFIXI="
|
||||
},
|
||||
{
|
||||
"pname": "System.Configuration.ConfigurationManager",
|
||||
"version": "4.4.0",
|
||||
"hash": "sha256-+8wGYllXnIxRzy9dLhZFB88GoPj8ivYXS0KUfcivT8I="
|
||||
},
|
||||
{
|
||||
"pname": "System.Diagnostics.Debug",
|
||||
"version": "4.0.11",
|
||||
"hash": "sha256-P+rSQJVoN6M56jQbs76kZ9G3mAWFdtF27P/RijN8sj4="
|
||||
},
|
||||
{
|
||||
"pname": "System.Diagnostics.Debug",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-fkA79SjPbSeiEcrbbUsb70u9B7wqbsdM9s1LnoKj0gM="
|
||||
},
|
||||
{
|
||||
"pname": "System.Diagnostics.DiagnosticSource",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-OFJRb0ygep0Z3yDBLwAgM/Tkfs4JCDtsNhwDH9cd1Xw="
|
||||
},
|
||||
{
|
||||
"pname": "System.Diagnostics.DiagnosticSource",
|
||||
"version": "7.0.0",
|
||||
"hash": "sha256-9Wk8cHSkjKtqkN6xW7KnXoQVtF/VNbKeBq79WqDesMs="
|
||||
},
|
||||
{
|
||||
"pname": "System.Diagnostics.Tracing",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-hCETZpHHGVhPYvb4C0fh4zs+8zv4GPoixagkLZjpa9Q="
|
||||
},
|
||||
{
|
||||
"pname": "System.Dynamic.Runtime",
|
||||
"version": "4.0.11",
|
||||
"hash": "sha256-qWqFVxuXioesVftv2RVJZOnmojUvRjb7cS3Oh3oTit4="
|
||||
},
|
||||
{
|
||||
"pname": "System.Dynamic.Runtime",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-k75gjOYimIQtLBD5NDzwwi3ZMUBPRW3jmc3evDMMJbU="
|
||||
},
|
||||
{
|
||||
"pname": "System.Globalization",
|
||||
"version": "4.0.11",
|
||||
"hash": "sha256-rbSgc2PIEc2c2rN6LK3qCREAX3DqA2Nq1WcLrZYsDBw="
|
||||
},
|
||||
{
|
||||
"pname": "System.Globalization",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-caL0pRmFSEsaoeZeWN5BTQtGrAtaQPwFi8YOZPZG5rI="
|
||||
},
|
||||
{
|
||||
"pname": "System.Globalization.Calendars",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-uNOD0EOVFgnS2fMKvMiEtI9aOw00+Pfy/H+qucAQlPc="
|
||||
},
|
||||
{
|
||||
"pname": "System.Globalization.Extensions",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-mmJWA27T0GRVuFP9/sj+4TrR4GJWrzNIk2PDrbr7RQk="
|
||||
},
|
||||
{
|
||||
"pname": "System.IO",
|
||||
"version": "4.1.0",
|
||||
"hash": "sha256-V6oyQFwWb8NvGxAwvzWnhPxy9dKOfj/XBM3tEC5aHrw="
|
||||
},
|
||||
{
|
||||
"pname": "System.IO",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-ruynQHekFP5wPrDiVyhNiRIXeZ/I9NpjK5pU+HPDiRY="
|
||||
},
|
||||
{
|
||||
"pname": "System.IO.FileSystem",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-vNIYnvlayuVj0WfRfYKpDrhDptlhp1pN8CYmlVd2TXw="
|
||||
},
|
||||
{
|
||||
"pname": "System.IO.FileSystem.Primitives",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-LMnfg8Vwavs9cMnq9nNH8IWtAtSfk0/Fy4s4Rt9r1kg="
|
||||
},
|
||||
{
|
||||
"pname": "System.Linq",
|
||||
"version": "4.1.0",
|
||||
"hash": "sha256-ZQpFtYw5N1F1aX0jUK3Tw+XvM5tnlnshkTCNtfVA794="
|
||||
},
|
||||
{
|
||||
"pname": "System.Linq",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-R5uiSL3l6a3XrXSSL6jz+q/PcyVQzEAByiuXZNSqD/A="
|
||||
},
|
||||
{
|
||||
"pname": "System.Linq.Expressions",
|
||||
"version": "4.1.0",
|
||||
"hash": "sha256-7zqB+FXgkvhtlBzpcZyd81xczWP0D3uWssyAGw3t7b4="
|
||||
},
|
||||
{
|
||||
"pname": "System.Linq.Expressions",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-+3pvhZY7rip8HCbfdULzjlC9FPZFpYoQxhkcuFm2wk8="
|
||||
},
|
||||
{
|
||||
"pname": "System.Memory",
|
||||
"version": "4.5.5",
|
||||
"hash": "sha256-EPQ9o1Kin7KzGI5O3U3PUQAZTItSbk9h/i4rViN3WiI="
|
||||
},
|
||||
{
|
||||
"pname": "System.Net.Http",
|
||||
"version": "4.3.4",
|
||||
"hash": "sha256-FMoU0K7nlPLxoDju0NL21Wjlga9GpnAoQjsFhFYYt00="
|
||||
},
|
||||
{
|
||||
"pname": "System.Net.Primitives",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-MY7Z6vOtFMbEKaLW9nOSZeAjcWpwCtdO7/W1mkGZBzE="
|
||||
},
|
||||
{
|
||||
"pname": "System.ObjectModel",
|
||||
"version": "4.0.12",
|
||||
"hash": "sha256-MudZ/KYcvYsn2cST3EE049mLikrNkmE7QoUoYKKby+s="
|
||||
},
|
||||
{
|
||||
"pname": "System.ObjectModel",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-gtmRkWP2Kwr3nHtDh0yYtce38z1wrGzb6fjm4v8wN6Q="
|
||||
},
|
||||
{
|
||||
"pname": "System.Private.Uri",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-fVfgcoP4AVN1E5wHZbKBIOPYZ/xBeSIdsNF+bdukIRM="
|
||||
},
|
||||
{
|
||||
"pname": "System.Private.Uri",
|
||||
"version": "4.3.2",
|
||||
"hash": "sha256-jB2+W3tTQ6D9XHy5sEFMAazIe1fu2jrENUO0cb48OgU="
|
||||
},
|
||||
{
|
||||
"pname": "System.Reflection",
|
||||
"version": "4.1.0",
|
||||
"hash": "sha256-idZHGH2Yl/hha1CM4VzLhsaR8Ljo/rV7TYe7mwRJSMs="
|
||||
},
|
||||
{
|
||||
"pname": "System.Reflection",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-NQSZRpZLvtPWDlvmMIdGxcVuyUnw92ZURo0hXsEshXY="
|
||||
},
|
||||
{
|
||||
"pname": "System.Reflection.Emit",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-5LhkDmhy2FkSxulXR+bsTtMzdU3VyyuZzsxp7/DwyIU="
|
||||
},
|
||||
{
|
||||
"pname": "System.Reflection.Emit.ILGeneration",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-mKRknEHNls4gkRwrEgi39B+vSaAz/Gt3IALtS98xNnA="
|
||||
},
|
||||
{
|
||||
"pname": "System.Reflection.Emit.Lightweight",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-rKx4a9yZKcajloSZHr4CKTVJ6Vjh95ni+zszPxWjh2I="
|
||||
},
|
||||
{
|
||||
"pname": "System.Reflection.Extensions",
|
||||
"version": "4.0.1",
|
||||
"hash": "sha256-NsfmzM9G/sN3H8X2cdnheTGRsh7zbRzvegnjDzDH/FQ="
|
||||
},
|
||||
{
|
||||
"pname": "System.Reflection.Extensions",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-mMOCYzUenjd4rWIfq7zIX9PFYk/daUyF0A8l1hbydAk="
|
||||
},
|
||||
{
|
||||
"pname": "System.Reflection.Metadata",
|
||||
"version": "1.6.0",
|
||||
"hash": "sha256-JJfgaPav7UfEh4yRAQdGhLZF1brr0tUWPl6qmfNWq/E="
|
||||
},
|
||||
{
|
||||
"pname": "System.Reflection.Primitives",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-5ogwWB4vlQTl3jjk1xjniG2ozbFIjZTL9ug0usZQuBM="
|
||||
},
|
||||
{
|
||||
"pname": "System.Reflection.TypeExtensions",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-4U4/XNQAnddgQIHIJq3P2T80hN0oPdU2uCeghsDTWng="
|
||||
},
|
||||
{
|
||||
"pname": "System.Resources.ResourceManager",
|
||||
"version": "4.0.1",
|
||||
"hash": "sha256-cZ2/3/fczLjEpn6j3xkgQV9ouOVjy4Kisgw5xWw9kSw="
|
||||
},
|
||||
{
|
||||
"pname": "System.Resources.ResourceManager",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-idiOD93xbbrbwwSnD4mORA9RYi/D/U48eRUsn/WnWGo="
|
||||
},
|
||||
{
|
||||
"pname": "System.Runtime",
|
||||
"version": "4.1.0",
|
||||
"hash": "sha256-FViNGM/4oWtlP6w0JC0vJU+k9efLKZ+yaXrnEeabDQo="
|
||||
},
|
||||
{
|
||||
"pname": "System.Runtime",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-51813WXpBIsuA6fUtE5XaRQjcWdQ2/lmEokJt97u0Rg="
|
||||
},
|
||||
{
|
||||
"pname": "System.Runtime",
|
||||
"version": "4.3.1",
|
||||
"hash": "sha256-R9T68AzS1PJJ7v6ARz9vo88pKL1dWqLOANg4pkQjkA0="
|
||||
},
|
||||
{
|
||||
"pname": "System.Runtime.CompilerServices.Unsafe",
|
||||
"version": "6.0.0",
|
||||
"hash": "sha256-bEG1PnDp7uKYz/OgLOWs3RWwQSVYm+AnPwVmAmcgp2I="
|
||||
},
|
||||
{
|
||||
"pname": "System.Runtime.Extensions",
|
||||
"version": "4.1.0",
|
||||
"hash": "sha256-X7DZ5CbPY7jHs20YZ7bmcXs9B5Mxptu/HnBUvUnNhGc="
|
||||
},
|
||||
{
|
||||
"pname": "System.Runtime.Extensions",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-wLDHmozr84v1W2zYCWYxxj0FR0JDYHSVRaRuDm0bd/o="
|
||||
},
|
||||
{
|
||||
"pname": "System.Runtime.Handles",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-KJ5aXoGpB56Y6+iepBkdpx/AfaJDAitx4vrkLqR7gms="
|
||||
},
|
||||
{
|
||||
"pname": "System.Runtime.InteropServices",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-8sDH+WUJfCR+7e4nfpftj/+lstEiZixWUBueR2zmHgI="
|
||||
},
|
||||
{
|
||||
"pname": "System.Runtime.Numerics",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-P5jHCgMbgFMYiONvzmaKFeOqcAIDPu/U8bOVrNPYKqc="
|
||||
},
|
||||
{
|
||||
"pname": "System.Runtime.Serialization.Primitives",
|
||||
"version": "4.1.1",
|
||||
"hash": "sha256-80B05oxJbPLGq2pGOSl6NlZvintX9A1CNpna2aN0WRA="
|
||||
},
|
||||
{
|
||||
"pname": "System.Security.Cryptography.Algorithms",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-tAJvNSlczYBJ3Ed24Ae27a55tq/n4D3fubNQdwcKWA8="
|
||||
},
|
||||
{
|
||||
"pname": "System.Security.Cryptography.Cng",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-u17vy6wNhqok91SrVLno2M1EzLHZm6VMca85xbVChsw="
|
||||
},
|
||||
{
|
||||
"pname": "System.Security.Cryptography.Csp",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-oefdTU/Z2PWU9nlat8uiRDGq/PGZoSPRgkML11pmvPQ="
|
||||
},
|
||||
{
|
||||
"pname": "System.Security.Cryptography.Encoding",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-Yuge89N6M+NcblcvXMeyHZ6kZDfwBv3LPMDiF8HhJss="
|
||||
},
|
||||
{
|
||||
"pname": "System.Security.Cryptography.OpenSsl",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-DL+D2sc2JrQiB4oAcUggTFyD8w3aLEjJfod5JPe+Oz4="
|
||||
},
|
||||
{
|
||||
"pname": "System.Security.Cryptography.Primitives",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-fnFi7B3SnVj5a+BbgXnbjnGNvWrCEU6Hp/wjsjWz318="
|
||||
},
|
||||
{
|
||||
"pname": "System.Security.Cryptography.ProtectedData",
|
||||
"version": "4.4.0",
|
||||
"hash": "sha256-Ri53QmFX8I8UH0x4PikQ1ZA07ZSnBUXStd5rBfGWFOE="
|
||||
},
|
||||
{
|
||||
"pname": "System.Security.Cryptography.X509Certificates",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-MG3V/owDh273GCUPsGGraNwaVpcydupl3EtPXj6TVG0="
|
||||
},
|
||||
{
|
||||
"pname": "System.Text.Encoding",
|
||||
"version": "4.0.11",
|
||||
"hash": "sha256-PEailOvG05CVgPTyKLtpAgRydlSHmtd5K0Y8GSHY2Lc="
|
||||
},
|
||||
{
|
||||
"pname": "System.Text.Encoding",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-GctHVGLZAa/rqkBNhsBGnsiWdKyv6VDubYpGkuOkBLg="
|
||||
},
|
||||
{
|
||||
"pname": "System.Text.Encoding.Extensions",
|
||||
"version": "4.0.11",
|
||||
"hash": "sha256-+kf7J3dEhgCbnCM5vHYlsTm5/R/Ud0Jr6elpHm922iI="
|
||||
},
|
||||
{
|
||||
"pname": "System.Text.Encoding.Extensions",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-vufHXg8QAKxHlujPHHcrtGwAqFmsCD6HKjfDAiHyAYc="
|
||||
},
|
||||
{
|
||||
"pname": "System.Text.Encodings.Web",
|
||||
"version": "7.0.0",
|
||||
"hash": "sha256-tF8qt9GZh/nPy0mEnj6nKLG4Lldpoi/D8xM5lv2CoYQ="
|
||||
},
|
||||
{
|
||||
"pname": "System.Text.Encodings.Web",
|
||||
"version": "8.0.0",
|
||||
"hash": "sha256-IUQkQkV9po1LC0QsqrilqwNzPvnc+4eVvq+hCvq8fvE="
|
||||
},
|
||||
{
|
||||
"pname": "System.Text.Json",
|
||||
"version": "6.0.0",
|
||||
"hash": "sha256-9AE/5ds4DqEfb0l+27fCBTSeYCdRWhxh2Bhg8IKvIuo="
|
||||
},
|
||||
{
|
||||
"pname": "System.Text.Json",
|
||||
"version": "7.0.0",
|
||||
"hash": "sha256-198zqA6NR4lGCKgpdy/ptkS0jsYRT6KUjewtfi4Fi2k="
|
||||
},
|
||||
{
|
||||
"pname": "System.Text.Json",
|
||||
"version": "8.0.5",
|
||||
"hash": "sha256-yKxo54w5odWT6nPruUVsaX53oPRe+gKzGvLnnxtwP68="
|
||||
},
|
||||
{
|
||||
"pname": "System.Text.RegularExpressions",
|
||||
"version": "4.1.0",
|
||||
"hash": "sha256-x6OQN6MCN7S0fJ6EFTfv4rczdUWjwuWE9QQ0P6fbh9c="
|
||||
},
|
||||
{
|
||||
"pname": "System.Threading",
|
||||
"version": "4.0.11",
|
||||
"hash": "sha256-mob1Zv3qLQhQ1/xOLXZmYqpniNUMCfn02n8ZkaAhqac="
|
||||
},
|
||||
{
|
||||
"pname": "System.Threading",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-ZDQ3dR4pzVwmaqBg4hacZaVenQ/3yAF/uV7BXZXjiWc="
|
||||
},
|
||||
{
|
||||
"pname": "System.Threading.Tasks",
|
||||
"version": "4.0.11",
|
||||
"hash": "sha256-5SLxzFg1df6bTm2t09xeI01wa5qQglqUwwJNlQPJIVs="
|
||||
},
|
||||
{
|
||||
"pname": "System.Threading.Tasks",
|
||||
"version": "4.3.0",
|
||||
"hash": "sha256-Z5rXfJ1EXp3G32IKZGiZ6koMjRu0n8C1NGrwpdIen4w="
|
||||
},
|
||||
{
|
||||
"pname": "System.Xml.ReaderWriter",
|
||||
"version": "4.0.11",
|
||||
"hash": "sha256-haZAFFQ9Sl2DhfvEbdx2YRqKEoxNMU5STaqpMmXw0zA="
|
||||
},
|
||||
{
|
||||
"pname": "System.Xml.XDocument",
|
||||
"version": "4.0.11",
|
||||
"hash": "sha256-KPz1kxe0RUBM+aoktJ/f9p51GudMERU8Pmwm//HdlFg="
|
||||
},
|
||||
{
|
||||
"pname": "TypeEquality",
|
||||
"version": "0.3.0",
|
||||
"hash": "sha256-V50xAOzzyUJrY+MYPRxtnqW5MVeATXCes89wPprv1r4="
|
||||
},
|
||||
{
|
||||
"pname": "WoofWare.Myriad.Plugins",
|
||||
"version": "7.0.1",
|
||||
"hash": "sha256-pqYc2jqlR9PzxIp1YAxIGgmRmUzHzdkgtTOHFdYtDto="
|
||||
},
|
||||
{
|
||||
"pname": "WoofWare.Myriad.Plugins.Attributes",
|
||||
"version": "3.6.9",
|
||||
"hash": "sha256-8+bOWoTG/OeEU3I/BrA9E3fznKB5evTHUByPf1UtGSQ="
|
||||
},
|
||||
{
|
||||
"pname": "WoofWare.Whippet.Fantomas",
|
||||
"version": "0.6.2",
|
||||
"hash": "sha256-nDT/W5eBwM/E+Z2oQ80maAGYrEyRJQXL1unxR9q6ztU="
|
||||
}
|
||||
]
|
924
nix/deps.nix
Normal file
924
nix/deps.nix
Normal file
@@ -0,0 +1,924 @@
|
||||
# This file was automatically generated by passthru.fetch-deps.
|
||||
# Please dont edit it manually, your changes might get overwritten!
|
||||
{fetchNuGet}: [
|
||||
(fetchNuGet {
|
||||
pname = "Argu";
|
||||
version = "6.1.1";
|
||||
hash = "sha256-tA9nFJmWvoSOo8oFV6wUuatG57a3QSW0jxADc8AzKe0=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "fantomas";
|
||||
version = "6.3.4";
|
||||
hash = "sha256-1aWqZynBkQoznenGoP0sbf1PcUXAbcHiWyECuv89xa0=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "FsCheck";
|
||||
version = "2.16.6";
|
||||
hash = "sha256-1hR2SaJTkqBzU3D955MvLNVzkQHkx0Z/QzOXZfzk2Zw=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "FSharp.Core";
|
||||
version = "6.0.0";
|
||||
hash = "sha256-aQDRgiGC7iTyzNEmvyd2RBCDcLG0I1dbfncHlkbeUMI=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "FSharp.Core";
|
||||
version = "8.0.300";
|
||||
hash = "sha256-BGDVf+oYfTgeqdS5iApzfT+rEhFN3P/9iuJDC1PuHZU=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "FSharp.SystemTextJson";
|
||||
version = "0.19.13";
|
||||
hash = "sha256-iEHJJoH6FfE1Qm5VmlOANVymdbWHU2/Y4pL4if7vMTU=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "FsUnit";
|
||||
version = "6.0.0";
|
||||
hash = "sha256-q87WQf6MqGhzvaQ7WkkUlCdoE94DY0CD5PaXEj64A6M=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Microsoft.Bcl.AsyncInterfaces";
|
||||
version = "6.0.0";
|
||||
hash = "sha256-49+H/iFwp+AfCICvWcqo9us4CzxApPKC37Q5Eqrw+JU=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Microsoft.Build.Tasks.Git";
|
||||
version = "1.1.1";
|
||||
hash = "sha256-PHxHmsCty8Si5dCUQSizeHkJrHa9+j2nRsg6Sz+5Za0=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Microsoft.CodeCoverage";
|
||||
version = "17.10.0";
|
||||
hash = "sha256-yQFwqVChRtIRpbtkJr92JH2i+O7xn91NGbYgnKs8G2g=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Microsoft.CSharp";
|
||||
version = "4.0.1";
|
||||
hash = "sha256-0huoqR2CJ3Z9Q2peaKD09TV3E6saYSqDGZ290K8CrH8=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Microsoft.CSharp";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-a3dAiPaVuky0wpcHmpTVtAQJNGZ2v91/oArA+dpJgj8=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Microsoft.Extensions.Configuration";
|
||||
version = "7.0.0";
|
||||
hash = "sha256-DaTP2X8zewdBfVbuy8rKvaIOWfnUrqVzpTRR3OnLL1g=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Microsoft.Extensions.Configuration.Abstractions";
|
||||
version = "7.0.0";
|
||||
hash = "sha256-QwX//PcURR6aGhH1QFkVmSayqnHaCsFPeE9d8J9nSKs=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Microsoft.Extensions.Configuration.Binder";
|
||||
version = "7.0.0";
|
||||
hash = "sha256-dIFAourb2UlKb8YKfJDlmMzGUSBTWo5gpObos29YLuI=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Microsoft.Extensions.DependencyInjection";
|
||||
version = "7.0.0";
|
||||
hash = "sha256-N2DHyHiaNvYDQ77f8HI0gE0uIX2aj/rvejVGdCXRP4g=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Microsoft.Extensions.DependencyInjection.Abstractions";
|
||||
version = "7.0.0";
|
||||
hash = "sha256-55lsa2QdX1CJn1TpW1vTnkvbGXKCeE9P0O6AkW49LaA=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Microsoft.Extensions.Logging";
|
||||
version = "7.0.0";
|
||||
hash = "sha256-rr/NXIZ/3FG5FYGrHD7iIIr12AksP4CnfUy1YvEdDa8=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Microsoft.Extensions.Logging.Abstractions";
|
||||
version = "7.0.0";
|
||||
hash = "sha256-uoMkX/TnwP0YabThacTMmyxdc9itQp73CN7xEFFox74=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Microsoft.Extensions.Logging.Configuration";
|
||||
version = "7.0.0";
|
||||
hash = "sha256-RCzW63KmAzjCBVzUVY2js05N9BHA5/AG7Dx7/veFrrg=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Microsoft.Extensions.Logging.Console";
|
||||
version = "7.0.0";
|
||||
hash = "sha256-TmE0Ghra88EusrXPMCvWZM4Nep4SGQDm32nTPaqIGdU=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Microsoft.Extensions.Options";
|
||||
version = "7.0.0";
|
||||
hash = "sha256-pj9I/2HpCU7bLu002/Bb5NF+ofUrJ3IyH7yVqfP8IC0=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Microsoft.Extensions.Options.ConfigurationExtensions";
|
||||
version = "7.0.0";
|
||||
hash = "sha256-8hYZXhb/JJHrA86EdzLkP5gv50RWJIjr20LBD2C+PtI=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Microsoft.Extensions.Primitives";
|
||||
version = "7.0.0";
|
||||
hash = "sha256-AGnfNNDvZDGZ0Er9JQxeyLoUbVH+jfXF3anFr12qk6w=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Microsoft.NET.Test.Sdk";
|
||||
version = "17.10.0";
|
||||
hash = "sha256-rkHIqB2mquNXF89XBTFpUL2z5msjTBsOcyjSBCh36I0=";
|
||||
})
|
||||
(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 = "1.1.1";
|
||||
hash = "sha256-8hLiUKvy/YirCWlFwzdejD2Db3DaXhHxT7GSZx/znJg=";
|
||||
})
|
||||
(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.SourceLink.Common";
|
||||
version = "1.1.1";
|
||||
hash = "sha256-b4FaNFneDVDbvJVX1iNyhhLTrnxUfnmyypeJr47GbXY=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Microsoft.SourceLink.GitHub";
|
||||
version = "1.1.1";
|
||||
hash = "sha256-3hc9ym5ReONp00ruCKio/Ka1gYXo/jDlUHtfK1wZPiU=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Microsoft.TestPlatform.ObjectModel";
|
||||
version = "17.10.0";
|
||||
hash = "sha256-3YjVGK2zEObksBGYg8b/CqoJgLQ1jUv4GCWNjDhLRh4=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Microsoft.TestPlatform.TestHost";
|
||||
version = "17.10.0";
|
||||
hash = "sha256-+yzP3FY6WoOosSpYnB7duZLhOPUZMQYy8zJ1d3Q4hK4=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Microsoft.Win32.Primitives";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-mBNDmPXNTW54XLnPAUwBRvkIORFM7/j0D0I2SyQPDEg=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Namotion.Reflection";
|
||||
version = "2.1.2";
|
||||
hash = "sha256-yLOGrEnHbXAxwTNLKsaibFrdbFLoJPpiaGjT0NYWD54=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Nerdbank.GitVersioning";
|
||||
version = "3.6.133";
|
||||
hash = "sha256-AEnBQaGGPMBmZJjZrdWARq/jY4SluuPIsKBbvfNEvLE=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "NETStandard.Library.Ref";
|
||||
version = "2.1.0";
|
||||
hash = "sha256-Ruovy9EKgXaFuFr3zgw5fRKUS9yBIJ4nLeHgXv0zx4o=";
|
||||
})
|
||||
(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 = "Newtonsoft.Json";
|
||||
version = "9.0.1";
|
||||
hash = "sha256-mYCBrgUhIJFzRuLLV9SIiIFHovzfR8Uuqfg6e08EnlU=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "NJsonSchema";
|
||||
version = "10.9.0";
|
||||
hash = "sha256-7RPZmR8k9zKKMjnIx0Ci2TvQ9iYfN1moxHXQfTp7O5Q=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "NUnit";
|
||||
version = "4.1.0";
|
||||
hash = "sha256-srzj0lf2ReKw41TnigZwf8rqKKNzGRRVrgN3hR/vRjo=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "NUnit3TestAdapter";
|
||||
version = "4.5.0";
|
||||
hash = "sha256-ER3ogl0L5FYyc6pVVPY1ch+AQxG/WgFcnWECnYQJPes=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "runtime.any.System.Collections";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-4PGZqyWhZ6/HCTF2KddDsbmTTjxs2oW79YfkberDZS8=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "runtime.any.System.Diagnostics.Tools";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-8yLKFt2wQxkEf7fNfzB+cPUCjYn2qbqNgQ1+EeY2h/I=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "runtime.any.System.Diagnostics.Tracing";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-dsmTLGvt8HqRkDWP8iKVXJCS+akAzENGXKPV18W2RgI=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "runtime.any.System.Globalization";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-PaiITTFI2FfPylTEk7DwzfKeiA/g/aooSU1pDcdwWLU=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "runtime.any.System.Globalization.Calendars";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-AYh39tgXJVFu8aLi9Y/4rK8yWMaza4S4eaxjfcuEEL4=";
|
||||
})
|
||||
(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.Extensions";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-Y2AnhOcJwJVYv7Rp6Jz6ma0fpITFqJW+8rsw106K2X8=";
|
||||
})
|
||||
(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.Text.Encoding.Extensions";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-6MYj0RmLh4EVqMtO/MRqBi0HOn5iG4x9JimgCCJ+EFM=";
|
||||
})
|
||||
(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.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl";
|
||||
version = "4.3.2";
|
||||
hash = "sha256-EbnOqPOrAgI9eNheXLR++VnY4pHzMsEKw1dFPJ/Fl2c=";
|
||||
})
|
||||
(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.23-x64.runtime.native.System.Security.Cryptography.OpenSsl";
|
||||
version = "4.3.2";
|
||||
hash = "sha256-mVg02TNvJc1BuHU03q3fH3M6cMgkKaQPBxraSHl/Btg=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-SrHqT9wrCBsxILWtaJgGKd6Odmxm8/Mh7Kh0CUkZVzA=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl";
|
||||
version = "4.3.2";
|
||||
hash = "sha256-g9Uiikrl+M40hYe0JMlGHe/lrR0+nN05YF64wzLmBBA=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "runtime.native.System";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-ZBZaodnjvLXATWpXXakFgcy6P+gjhshFXmglrL5xD5Y=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "runtime.native.System.Net.Http";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-c556PyheRwpYhweBjSfIwEyZHnAUB8jWioyKEcp/2dg=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "runtime.native.System.Security.Cryptography.Apple";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-2IhBv0i6pTcOyr8FFIyfPEaaCHUmJZ8DYwLUwJ+5waw=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "runtime.native.System.Security.Cryptography.OpenSsl";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-Jy01KhtcCl2wjMpZWH+X3fhHcVn+SyllWFY8zWlz/6I=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "runtime.native.System.Security.Cryptography.OpenSsl";
|
||||
version = "4.3.2";
|
||||
hash = "sha256-xqF6LbbtpzNC9n1Ua16PnYgXHU0LvblEROTfK4vIxX8=";
|
||||
})
|
||||
(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.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl";
|
||||
version = "4.3.2";
|
||||
hash = "sha256-aJBu6Frcg6webvzVcKNoUP1b462OAqReF2giTSyBzCQ=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-zi+b4sCFrA9QBiSGDD7xPV27r3iHGlV99gpyVUjRmc4=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl";
|
||||
version = "4.3.2";
|
||||
hash = "sha256-Mpt7KN2Kq51QYOEVesEjhWcCGTqWckuPf8HlQ110qLY=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-serkd4A7F6eciPiPJtUyJyxzdAtupEcWIZQ9nptEzIM=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-gybQU6mPgaWV3rBG2dbH6tT3tBq8mgze3PROdsuWnX0=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl";
|
||||
version = "4.3.2";
|
||||
hash = "sha256-JvMltmfVC53mCZtKDHE69G3RT6Id28hnskntP9MMP9U=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-VsP72GVveWnGUvS/vjOQLv1U80H2K8nZ4fDAmI61Hm4=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl";
|
||||
version = "4.3.2";
|
||||
hash = "sha256-QfFxWTVRNBhN4Dm1XRbCf+soNQpy81PsZed3x6op/bI=";
|
||||
})
|
||||
(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.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl";
|
||||
version = "4.3.2";
|
||||
hash = "sha256-EaJHVc9aDZ6F7ltM2JwlIuiJvqM67CKRq682iVSo+pU=";
|
||||
})
|
||||
(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.04-x64.runtime.native.System.Security.Cryptography.OpenSsl";
|
||||
version = "4.3.2";
|
||||
hash = "sha256-PHR0+6rIjJswn89eoiWYY1DuU8u6xRJLrtjykAMuFmA=";
|
||||
})
|
||||
(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.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl";
|
||||
version = "4.3.2";
|
||||
hash = "sha256-LFkh7ua7R4rI5w2KGjcHlGXLecsncCy6kDXLuy4qD/Q=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "runtime.unix.Microsoft.Win32.Primitives";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-LZb23lRXzr26tRS5aA0xyB08JxiblPDoA7HBvn6awXg=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "runtime.unix.System.Diagnostics.Debug";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-ReoazscfbGH+R6s6jkg5sIEHWNEvjEoHtIsMbpc7+tI=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "runtime.unix.System.IO.FileSystem";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-Pf4mRl6YDK2x2KMh0WdyNgv0VUNdSKVDLlHqozecy5I=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "runtime.unix.System.Net.Primitives";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-pHJ+I6i16MV6m77uhTC6GPY6jWGReE3SSP3fVB59ti0=";
|
||||
})
|
||||
(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 = "SwaggerProvider";
|
||||
version = "1.0.1";
|
||||
hash = "sha256-zCfTEXZStDfoSNkMf2EMs1uZmX3GxHLbjTqmBEebSyk=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Buffers";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-XqZWb4Kd04960h4U9seivjKseGA/YEIpdplfHYHQ9jk=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Buffers";
|
||||
version = "4.5.1";
|
||||
hash = "sha256-wws90sfi9M7kuCPWkv1CEYMJtCqx9QB/kj0ymlsNaxI=";
|
||||
})
|
||||
(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.Concurrent";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-KMY5DfJnDeIsa13DpqvyN8NkReZEMAFnlmNglVoFIXI=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Configuration.ConfigurationManager";
|
||||
version = "4.4.0";
|
||||
hash = "sha256-+8wGYllXnIxRzy9dLhZFB88GoPj8ivYXS0KUfcivT8I=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Diagnostics.Debug";
|
||||
version = "4.0.11";
|
||||
hash = "sha256-P+rSQJVoN6M56jQbs76kZ9G3mAWFdtF27P/RijN8sj4=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Diagnostics.Debug";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-fkA79SjPbSeiEcrbbUsb70u9B7wqbsdM9s1LnoKj0gM=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Diagnostics.DiagnosticSource";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-OFJRb0ygep0Z3yDBLwAgM/Tkfs4JCDtsNhwDH9cd1Xw=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Diagnostics.DiagnosticSource";
|
||||
version = "7.0.0";
|
||||
hash = "sha256-9Wk8cHSkjKtqkN6xW7KnXoQVtF/VNbKeBq79WqDesMs=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Diagnostics.Tools";
|
||||
version = "4.0.1";
|
||||
hash = "sha256-vSBqTbmWXylvRa37aWyktym+gOpsvH43mwr6A962k6U=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Diagnostics.Tracing";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-hCETZpHHGVhPYvb4C0fh4zs+8zv4GPoixagkLZjpa9Q=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Dynamic.Runtime";
|
||||
version = "4.0.11";
|
||||
hash = "sha256-qWqFVxuXioesVftv2RVJZOnmojUvRjb7cS3Oh3oTit4=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Dynamic.Runtime";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-k75gjOYimIQtLBD5NDzwwi3ZMUBPRW3jmc3evDMMJbU=";
|
||||
})
|
||||
(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.Globalization.Calendars";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-uNOD0EOVFgnS2fMKvMiEtI9aOw00+Pfy/H+qucAQlPc=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Globalization.Extensions";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-mmJWA27T0GRVuFP9/sj+4TrR4GJWrzNIk2PDrbr7RQk=";
|
||||
})
|
||||
(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.FileSystem";
|
||||
version = "4.0.1";
|
||||
hash = "sha256-4VKXFgcGYCTWVXjAlniAVq0dO3o5s8KHylg2wg2/7k0=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.IO.FileSystem";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-vNIYnvlayuVj0WfRfYKpDrhDptlhp1pN8CYmlVd2TXw=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.IO.FileSystem.Primitives";
|
||||
version = "4.0.1";
|
||||
hash = "sha256-IpigKMomqb6pmYWkrlf0ZdpILtRluX2cX5sOKVW0Feg=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.IO.FileSystem.Primitives";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-LMnfg8Vwavs9cMnq9nNH8IWtAtSfk0/Fy4s4Rt9r1kg=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Linq";
|
||||
version = "4.1.0";
|
||||
hash = "sha256-ZQpFtYw5N1F1aX0jUK3Tw+XvM5tnlnshkTCNtfVA794=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Linq";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-R5uiSL3l6a3XrXSSL6jz+q/PcyVQzEAByiuXZNSqD/A=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Linq.Expressions";
|
||||
version = "4.1.0";
|
||||
hash = "sha256-7zqB+FXgkvhtlBzpcZyd81xczWP0D3uWssyAGw3t7b4=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Linq.Expressions";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-+3pvhZY7rip8HCbfdULzjlC9FPZFpYoQxhkcuFm2wk8=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Memory";
|
||||
version = "4.5.4";
|
||||
hash = "sha256-3sCEfzO4gj5CYGctl9ZXQRRhwAraMQfse7yzKoRe65E=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Memory";
|
||||
version = "4.5.5";
|
||||
hash = "sha256-EPQ9o1Kin7KzGI5O3U3PUQAZTItSbk9h/i4rViN3WiI=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Net.Http";
|
||||
version = "4.3.4";
|
||||
hash = "sha256-FMoU0K7nlPLxoDju0NL21Wjlga9GpnAoQjsFhFYYt00=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Net.Primitives";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-MY7Z6vOtFMbEKaLW9nOSZeAjcWpwCtdO7/W1mkGZBzE=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Numerics.Vectors";
|
||||
version = "4.4.0";
|
||||
hash = "sha256-auXQK2flL/JpnB/rEcAcUm4vYMCYMEMiWOCAlIaqu2U=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Numerics.Vectors";
|
||||
version = "4.5.0";
|
||||
hash = "sha256-qdSTIFgf2htPS+YhLGjAGiLN8igCYJnCCo6r78+Q+c8=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.ObjectModel";
|
||||
version = "4.0.12";
|
||||
hash = "sha256-MudZ/KYcvYsn2cST3EE049mLikrNkmE7QoUoYKKby+s=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.ObjectModel";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-gtmRkWP2Kwr3nHtDh0yYtce38z1wrGzb6fjm4v8wN6Q=";
|
||||
})
|
||||
(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.Emit";
|
||||
version = "4.0.1";
|
||||
hash = "sha256-F1MvYoQWHCY89/O4JBwswogitqVvKuVfILFqA7dmuHk=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Reflection.Emit";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-5LhkDmhy2FkSxulXR+bsTtMzdU3VyyuZzsxp7/DwyIU=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Reflection.Emit.ILGeneration";
|
||||
version = "4.0.1";
|
||||
hash = "sha256-YG+eJBG5P+5adsHiw/lhJwvREnvdHw6CJyS8ZV4Ujd0=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Reflection.Emit.ILGeneration";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-mKRknEHNls4gkRwrEgi39B+vSaAz/Gt3IALtS98xNnA=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Reflection.Emit.Lightweight";
|
||||
version = "4.0.1";
|
||||
hash = "sha256-uVvNOnL64CPqsgZP2OLqNmxdkZl6Q0fTmKmv9gcBi+g=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Reflection.Emit.Lightweight";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-rKx4a9yZKcajloSZHr4CKTVJ6Vjh95ni+zszPxWjh2I=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Reflection.Extensions";
|
||||
version = "4.0.1";
|
||||
hash = "sha256-NsfmzM9G/sN3H8X2cdnheTGRsh7zbRzvegnjDzDH/FQ=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Reflection.Extensions";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-mMOCYzUenjd4rWIfq7zIX9PFYk/daUyF0A8l1hbydAk=";
|
||||
})
|
||||
(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.Reflection.TypeExtensions";
|
||||
version = "4.1.0";
|
||||
hash = "sha256-R0YZowmFda+xzKNR4kKg7neFoE30KfZwp/IwfRSKVK4=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Reflection.TypeExtensions";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-4U4/XNQAnddgQIHIJq3P2T80hN0oPdU2uCeghsDTWng=";
|
||||
})
|
||||
(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 = "4.5.3";
|
||||
hash = "sha256-lnZMUqRO4RYRUeSO8HSJ9yBHqFHLVbmenwHWkIU20ak=";
|
||||
})
|
||||
(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.Runtime.Numerics";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-P5jHCgMbgFMYiONvzmaKFeOqcAIDPu/U8bOVrNPYKqc=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Runtime.Serialization.Primitives";
|
||||
version = "4.1.1";
|
||||
hash = "sha256-80B05oxJbPLGq2pGOSl6NlZvintX9A1CNpna2aN0WRA=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Security.Cryptography.Algorithms";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-tAJvNSlczYBJ3Ed24Ae27a55tq/n4D3fubNQdwcKWA8=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Security.Cryptography.Cng";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-u17vy6wNhqok91SrVLno2M1EzLHZm6VMca85xbVChsw=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Security.Cryptography.Csp";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-oefdTU/Z2PWU9nlat8uiRDGq/PGZoSPRgkML11pmvPQ=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Security.Cryptography.Encoding";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-Yuge89N6M+NcblcvXMeyHZ6kZDfwBv3LPMDiF8HhJss=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Security.Cryptography.OpenSsl";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-DL+D2sc2JrQiB4oAcUggTFyD8w3aLEjJfod5JPe+Oz4=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Security.Cryptography.Primitives";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-fnFi7B3SnVj5a+BbgXnbjnGNvWrCEU6Hp/wjsjWz318=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Security.Cryptography.ProtectedData";
|
||||
version = "4.4.0";
|
||||
hash = "sha256-Ri53QmFX8I8UH0x4PikQ1ZA07ZSnBUXStd5rBfGWFOE=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Security.Cryptography.X509Certificates";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-MG3V/owDh273GCUPsGGraNwaVpcydupl3EtPXj6TVG0=";
|
||||
})
|
||||
(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.Extensions";
|
||||
version = "4.0.11";
|
||||
hash = "sha256-+kf7J3dEhgCbnCM5vHYlsTm5/R/Ud0Jr6elpHm922iI=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Text.Encoding.Extensions";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-vufHXg8QAKxHlujPHHcrtGwAqFmsCD6HKjfDAiHyAYc=";
|
||||
})
|
||||
(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.0";
|
||||
hash = "sha256-198zqA6NR4lGCKgpdy/ptkS0jsYRT6KUjewtfi4Fi2k=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Text.RegularExpressions";
|
||||
version = "4.1.0";
|
||||
hash = "sha256-x6OQN6MCN7S0fJ6EFTfv4rczdUWjwuWE9QQ0P6fbh9c=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Threading";
|
||||
version = "4.0.11";
|
||||
hash = "sha256-mob1Zv3qLQhQ1/xOLXZmYqpniNUMCfn02n8ZkaAhqac=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Threading";
|
||||
version = "4.3.0";
|
||||
hash = "sha256-ZDQ3dR4pzVwmaqBg4hacZaVenQ/3yAF/uV7BXZXjiWc=";
|
||||
})
|
||||
(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.Extensions";
|
||||
version = "4.0.0";
|
||||
hash = "sha256-+YdcPkMhZhRbMZHnfsDwpNbUkr31X7pQFGxXYcAPZbE=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Threading.Tasks.Extensions";
|
||||
version = "4.5.4";
|
||||
hash = "sha256-owSpY8wHlsUXn5xrfYAiu847L6fAKethlvYx97Ri1ng=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Xml.ReaderWriter";
|
||||
version = "4.0.11";
|
||||
hash = "sha256-haZAFFQ9Sl2DhfvEbdx2YRqKEoxNMU5STaqpMmXw0zA=";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "System.Xml.XDocument";
|
||||
version = "4.0.11";
|
||||
hash = "sha256-KPz1kxe0RUBM+aoktJ/f9p51GudMERU8Pmwm//HdlFg=";
|
||||
})
|
||||
]
|
Reference in New Issue
Block a user