From efd9e66ba8a61e92d92f355d3620b7923c1ccd78 Mon Sep 17 00:00:00 2001 From: Profpatsch Date: Sun, 15 Sep 2019 00:29:33 +0200 Subject: completion.dhall: add completion options for dhall command line --- pkgs/profpatsch/dhallsh/completion.dhall | 134 +++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 pkgs/profpatsch/dhallsh/completion.dhall (limited to 'pkgs/profpatsch/dhallsh') diff --git a/pkgs/profpatsch/dhallsh/completion.dhall b/pkgs/profpatsch/dhallsh/completion.dhall new file mode 100644 index 00000000..9df63144 --- /dev/null +++ b/pkgs/profpatsch/dhallsh/completion.dhall @@ -0,0 +1,134 @@ +let Void = + https://raw.githubusercontent.com/sellout/dada/master/Void/Type sha256:a413d5091ac5fb02410f02bdbede12eacd89ae52a933a6d24bb68eadbff92613 + +let Option = + { short : + Optional Text + , long : + Text + , description : + Text + , argument : + Optional Text + } + +let Command = + λ(a : Type) + → { name : + Text + , description : + Text + , options : + List Option + , subcommands : + List a + } + +let opt = + λ(long : Text) + → λ(description : Text) + → { long = + long + , description = + description + , argument = + None Text + , short = + None Text + } + +let fileOpt = + opt "file" "Read expression from a file instead of standard input" + ⫽ { argument = Some "FILE" } + +let alphaOpt = opt "alpha" "α-normalize expression" + +let inplaceOpt = + opt "inplace" "Modify the specified file in-place" + ⫽ { argument = Some "FILE" } + +let jsonOpt = opt "json" "Use JSON representation of CBOR" + +let leafCommand = + λ(name : Text) + → λ(description : Text) + → { options = + [] : List Option + , subcommands = + [] : List Void + , name = + name + , description = + description + } + +in { name = + "dhall" + , description = + "Interpreter for the Dhall language" + , options = + [ opt "annotate" "Add a type annotation to the output" + , alphaOpt + , opt "explain" "Explain error messages in more detail" + , opt "plain" "Disable syntax highlighting" + , opt "ascii" "Format code using only ASCII syntax" + , opt "standard-version" "The standard version to use" + ⫽ { argument = Some "X.Y.Z" } + ] + , subcommands = + [ leafCommand + "version" + "Display version" + , leafCommand "resolve" "Resolve an expression's imports" + ⫽ { options = + [ fileOpt + , opt "dot" "Output import dependency graph in dot format" + , opt + "immediate-dependencies" + "List immediate import dependencies" + , opt + "transitive-dependencies" + "List transitive import dependencies" + ] + } + , leafCommand "type" "Infer an expression's type" + ⫽ { options = [ fileOpt ] } + , leafCommand "normalize" "Normalize an expression" + ⫽ { options = [ fileOpt, alphaOpt ] } + , leafCommand "repl" "Interpret expressions in a REPL" + , leafCommand + "diff" + "Render the difference between the normal form of two expressions" + , leafCommand "hash" "Compute semantic hashes for Dhall expressions" + , leafCommand "lint" "Improve Dhall code" + ⫽ { options = [ inplaceOpt ] } + , leafCommand "format" "Formatter for the Dhall language" + ⫽ { options = + [ opt "check" "Only check if the input is formatted" + , inplaceOpt + ] + } + , leafCommand + "freeze" + "Add integrity checks to remote import statements of an expression" + ⫽ { options = + [ inplaceOpt + , opt + "all" + "Add integrity checks to all imports (not just remote imports)" + , opt + "cache" + "Add fallback unprotected imports when using integrity checks purely for caching purposes" + ] + } + , leafCommand "encode" "Encode a Dhall expression to binary" + ⫽ { options = [ fileOpt, jsonOpt ] } + , leafCommand "decode" "Decode a Dhall expression from binary" + ⫽ { options = [ fileOpt, jsonOpt ] } + , leafCommand + "text" + "Render a Dhall expression that evaluates to a Text literal" + ⫽ { options = [ fileOpt ] } + ] + } + : Command (Command Void) -- cgit 1.4.1