mirror of
https://github.com/Smaug123/gitea-repo-config
synced 2025-10-05 15:38:41 +00:00
Use Argu in app (#3)
This commit is contained in:
@@ -14,6 +14,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Argu" Version="6.1.1" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="7.0.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
@@ -6,6 +6,30 @@ open System.Net.Http
|
|||||||
open Microsoft.Extensions.Logging
|
open Microsoft.Extensions.Logging
|
||||||
open Microsoft.Extensions.Logging.Console
|
open Microsoft.Extensions.Logging.Console
|
||||||
open Microsoft.Extensions.Options
|
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 =
|
module Program =
|
||||||
|
|
||||||
@@ -129,13 +153,18 @@ module Program =
|
|||||||
|
|
||||||
[<EntryPoint>]
|
[<EntryPoint>]
|
||||||
let main argv =
|
let main argv =
|
||||||
let configFile, giteaHost, giteaApiToken, githubApiToken =
|
let parser = ArgumentParser.Create<ArgsFragments> ()
|
||||||
match argv with
|
let parsed = parser.Parse argv
|
||||||
| [| 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 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 =
|
||||||
let options = ConsoleLoggerOptions ()
|
let options = ConsoleLoggerOptions ()
|
||||||
@@ -154,8 +183,8 @@ module Program =
|
|||||||
let logger = loggerProvider.CreateLogger "Gitea.App"
|
let logger = loggerProvider.CreateLogger "Gitea.App"
|
||||||
|
|
||||||
use client = new HttpClient ()
|
use client = new HttpClient ()
|
||||||
client.BaseAddress <- giteaHost
|
client.BaseAddress <- args.GiteaHost
|
||||||
client.DefaultRequestHeaders.Add ("Authorization", $"token {giteaApiToken}")
|
client.DefaultRequestHeaders.Add ("Authorization", $"token {args.GiteaAdminApiToken}")
|
||||||
|
|
||||||
let client = Gitea.Client client
|
let client = Gitea.Client client
|
||||||
|
|
||||||
@@ -172,7 +201,7 @@ module Program =
|
|||||||
|
|
||||||
match repoErrors with
|
match repoErrors with
|
||||||
| Ok () -> ()
|
| Ok () -> ()
|
||||||
| Error errors -> do! Gitea.reconcileRepoErrors logger client githubApiToken errors
|
| Error errors -> do! Gitea.reconcileRepoErrors logger client args.GitHubApiToken errors
|
||||||
|
|
||||||
match userErrors, repoErrors with
|
match userErrors, repoErrors with
|
||||||
| Ok (), Ok () -> return 0
|
| Ok (), Ok () -> return 0
|
||||||
|
15
nix/deps.nix
15
nix/deps.nix
@@ -1,6 +1,11 @@
|
|||||||
# This file was automatically generated by passthru.fetch-deps.
|
# This file was automatically generated by passthru.fetch-deps.
|
||||||
# Please don't edit it manually, your changes might get overwritten!
|
# Please don't edit it manually, your changes might get overwritten!
|
||||||
{fetchNuGet}: [
|
{fetchNuGet}: [
|
||||||
|
(fetchNuGet {
|
||||||
|
pname = "Argu";
|
||||||
|
version = "6.1.1";
|
||||||
|
sha256 = "1v996g0760qhiys2ahdpnvkldaxr2jn5f1falf789glnk4a6f3xl";
|
||||||
|
})
|
||||||
(fetchNuGet {
|
(fetchNuGet {
|
||||||
pname = "coverlet.collector";
|
pname = "coverlet.collector";
|
||||||
version = "3.1.2";
|
version = "3.1.2";
|
||||||
@@ -556,6 +561,11 @@
|
|||||||
version = "4.3.0";
|
version = "4.3.0";
|
||||||
sha256 = "0wi10md9aq33jrkh2c24wr2n9hrpyamsdhsxdcnf43b7y86kkii8";
|
sha256 = "0wi10md9aq33jrkh2c24wr2n9hrpyamsdhsxdcnf43b7y86kkii8";
|
||||||
})
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
pname = "System.Configuration.ConfigurationManager";
|
||||||
|
version = "4.4.0";
|
||||||
|
sha256 = "1hjgmz47v5229cbzd2pwz2h0dkq78lb2wp9grx8qr72pb5i0dk7v";
|
||||||
|
})
|
||||||
(fetchNuGet {
|
(fetchNuGet {
|
||||||
pname = "System.Diagnostics.Debug";
|
pname = "System.Diagnostics.Debug";
|
||||||
version = "4.0.11";
|
version = "4.0.11";
|
||||||
@@ -816,6 +826,11 @@
|
|||||||
version = "4.3.0";
|
version = "4.3.0";
|
||||||
sha256 = "0pyzncsv48zwly3lw4f2dayqswcfvdwq2nz0dgwmi7fj3pn64wby";
|
sha256 = "0pyzncsv48zwly3lw4f2dayqswcfvdwq2nz0dgwmi7fj3pn64wby";
|
||||||
})
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
pname = "System.Security.Cryptography.ProtectedData";
|
||||||
|
version = "4.4.0";
|
||||||
|
sha256 = "1q8ljvqhasyynp94a1d7jknk946m20lkwy2c3wa8zw2pc517fbj6";
|
||||||
|
})
|
||||||
(fetchNuGet {
|
(fetchNuGet {
|
||||||
pname = "System.Security.Cryptography.X509Certificates";
|
pname = "System.Security.Cryptography.X509Certificates";
|
||||||
version = "4.3.0";
|
version = "4.3.0";
|
||||||
|
Reference in New Issue
Block a user