Use Argu in app (#3)

This commit is contained in:
Patrick Stevens
2022-12-29 23:37:36 +00:00
committed by GitHub
parent 86982ec4aa
commit 0fcd2b45bf
3 changed files with 54 additions and 9 deletions

View File

@@ -14,6 +14,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Argu" Version="6.1.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="7.0.0" />
</ItemGroup>

View File

@@ -6,6 +6,30 @@ open System.Net.Http
open Microsoft.Extensions.Logging
open Microsoft.Extensions.Logging.Console
open Microsoft.Extensions.Options
open Argu
type ArgsFragments =
| [<ExactlyOnce ; EqualsAssignmentOrSpaced>] Config_File of string
| [<ExactlyOnce ; EqualsAssignmentOrSpaced>] Gitea_Host of string
| [<ExactlyOnce ; EqualsAssignmentOrSpaced>] Gitea_Admin_Api_Token of string
| [<Unique ; EqualsAssignmentOrSpaced>] GitHub_Api_Token of string
interface IArgParserTemplate with
member s.Usage =
match s with
| Config_File _ ->
"a config file, JSON, conforming to GiteaConfig.schema.json, specifying the desired Gitea configuration"
| Gitea_Host _ -> "the Gitea host, e.g. https://gitea.mydomain.com"
| Gitea_Admin_Api_Token _ -> "a Gitea admin user's API token"
| GitHub_Api_Token _ -> "a GitHub API token with read access to every desired sync-from-GitHub repo"
type Args =
{
ConfigFile : FileInfo
GiteaHost : Uri
GiteaAdminApiToken : string
GitHubApiToken : string option
}
module Program =
@@ -129,13 +153,18 @@ module Program =
[<EntryPoint>]
let main argv =
let configFile, giteaHost, giteaApiToken, githubApiToken =
match argv with
| [| f ; giteaHost ; giteaToken |] -> FileInfo f, Uri giteaHost, giteaToken, None
| [| f ; giteaHost ; giteaToken ; githubToken |] -> FileInfo f, Uri giteaHost, giteaToken, Some githubToken
| _ -> failwithf $"malformed args: %+A{argv}"
let parser = ArgumentParser.Create<ArgsFragments> ()
let parsed = parser.Parse argv
let config = GiteaConfig.get configFile
let args =
{
ConfigFile = parsed.GetResult ArgsFragments.Config_File |> FileInfo
GiteaHost = parsed.GetResult ArgsFragments.Gitea_Host |> Uri
GiteaAdminApiToken = parsed.GetResult ArgsFragments.Gitea_Admin_Api_Token
GitHubApiToken = parsed.TryGetResult ArgsFragments.GitHub_Api_Token
}
let config = GiteaConfig.get args.ConfigFile
let options =
let options = ConsoleLoggerOptions ()
@@ -154,8 +183,8 @@ module Program =
let logger = loggerProvider.CreateLogger "Gitea.App"
use client = new HttpClient ()
client.BaseAddress <- giteaHost
client.DefaultRequestHeaders.Add ("Authorization", $"token {giteaApiToken}")
client.BaseAddress <- args.GiteaHost
client.DefaultRequestHeaders.Add ("Authorization", $"token {args.GiteaAdminApiToken}")
let client = Gitea.Client client
@@ -172,7 +201,7 @@ module Program =
match repoErrors with
| Ok () -> ()
| Error errors -> do! Gitea.reconcileRepoErrors logger client githubApiToken errors
| Error errors -> do! Gitea.reconcileRepoErrors logger client args.GitHubApiToken errors
match userErrors, repoErrors with
| Ok (), Ok () -> return 0

View File

@@ -1,6 +1,11 @@
# This file was automatically generated by passthru.fetch-deps.
# Please don't edit it manually, your changes might get overwritten!
{fetchNuGet}: [
(fetchNuGet {
pname = "Argu";
version = "6.1.1";
sha256 = "1v996g0760qhiys2ahdpnvkldaxr2jn5f1falf789glnk4a6f3xl";
})
(fetchNuGet {
pname = "coverlet.collector";
version = "3.1.2";
@@ -556,6 +561,11 @@
version = "4.3.0";
sha256 = "0wi10md9aq33jrkh2c24wr2n9hrpyamsdhsxdcnf43b7y86kkii8";
})
(fetchNuGet {
pname = "System.Configuration.ConfigurationManager";
version = "4.4.0";
sha256 = "1hjgmz47v5229cbzd2pwz2h0dkq78lb2wp9grx8qr72pb5i0dk7v";
})
(fetchNuGet {
pname = "System.Diagnostics.Debug";
version = "4.0.11";
@@ -816,6 +826,11 @@
version = "4.3.0";
sha256 = "0pyzncsv48zwly3lw4f2dayqswcfvdwq2nz0dgwmi7fj3pn64wby";
})
(fetchNuGet {
pname = "System.Security.Cryptography.ProtectedData";
version = "4.4.0";
sha256 = "1q8ljvqhasyynp94a1d7jknk946m20lkwy2c3wa8zw2pc517fbj6";
})
(fetchNuGet {
pname = "System.Security.Cryptography.X509Certificates";
version = "4.3.0";