From 98f961b23f6551f1b9abd785e2aa0b21c4dc85da Mon Sep 17 00:00:00 2001 From: Profpatsch Date: Sat, 14 Sep 2019 22:59:15 +0200 Subject: main: factor out basic fish completion commands --- .../dhallsh/Fish/Complete/toCommand.dhall | 77 ++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 pkgs/profpatsch/dhallsh/Fish/Complete/toCommand.dhall (limited to 'pkgs/profpatsch/dhallsh/Fish/Complete/toCommand.dhall') diff --git a/pkgs/profpatsch/dhallsh/Fish/Complete/toCommand.dhall b/pkgs/profpatsch/dhallsh/Fish/Complete/toCommand.dhall new file mode 100644 index 00000000..f7453b65 --- /dev/null +++ b/pkgs/profpatsch/dhallsh/Fish/Complete/toCommand.dhall @@ -0,0 +1,77 @@ +let Prelude = ../../imports/Prelude.dhall + +let Command = ../../Command/type.dhall + +let Argument = ../../Argument/type.dhall + +let Option = ../../Option/type.dhall + +let OptionPrinter = ../../OptionPrinter/type.dhall + +let Complete = ./type.dhall + +in λ(conditionOptionPrinter : OptionPrinter) + → λ(c : Complete) + → let long = + λ(name : Text) + → Prelude.Optional.map + Text + Argument + ( λ(content : Text) + → Argument.Option { opt = Option.Long name, arg = content } + ) + + let flag = + λ(name : Text) + → λ(flag : Bool) + → if flag + + then Some (Argument.Flag (Option.Long name)) + + else None Argument + + let conditionToText = + λ(c : Command Argument) + → Prelude.Text.concatSep + " " + ( ../../Command/toList.dhall + Argument + (../../Argument/toArgList.dhall conditionOptionPrinter) + c + ) + : Text + + let args = + [ long "command" (Some c.cmd) + , long "description" (Some c.description) + , Prelude.Optional.map + (Command Argument) + Argument + ( λ(c : Command Argument) + → Argument.Option + { opt = Option.Long "condition", arg = conditionToText c } + ) + c.condition + , long "short-option" c.short-option + , long "long-option" c.long-option + , long "old-option" c.long-option-old-style + , long "arguments" c.argument + , long "wraps" c.wraps + , flag "keep-order" c.keep-order + , flag "no-files" c.no-files + , flag "require-parameter" c.require-parameter + ] + : List (Optional Argument) + + let id = λ(a : Optional Argument) → a + + in { cmd = + "complete" + , args = + ../../List/filterOptional.dhall + (Optional Argument) + Argument + id + args + : List Argument + } -- cgit 1.4.1