Subcommands (#62)

This commit is contained in:
Patrick Stevens
2023-08-07 12:13:53 +01:00
committed by GitHub
parent 46f24a44ec
commit 9a12abe0cf
11 changed files with 340 additions and 104 deletions

View File

@@ -0,0 +1,47 @@
namespace Gitea.Declarative
open System.IO
open Argu
type OutputSchemaArgsFragment =
| Output of string
interface IArgParserTemplate with
member s.Usage =
match s with
| Output _ -> "path to the file to be written (or overwritten, if it already exists), instead of stdout"
type OutputSchemaArgs =
{
Output : FileInfo option
}
static member OfParse
(parsed : ParseResults<OutputSchemaArgsFragment>)
: Result<OutputSchemaArgs, ArguParseException>
=
try
{
Output = parsed.TryGetResult OutputSchemaArgsFragment.Output |> Option.map FileInfo
}
|> Ok
with :? ArguParseException as e ->
Error e
[<RequireQualifiedAccess>]
module OutputSchema =
let run (args : OutputSchemaArgs) : Async<int> =
async {
use stream = GiteaConfig.getSchema ()
match args.Output with
| None ->
let reader = new StreamReader (stream)
System.Console.WriteLine (reader.ReadToEnd ())
| Some output ->
use output = output.OpenWrite ()
stream.CopyTo output
return 0
}