about summary refs log tree commit diff
path: root/pkgs/profpatsch/dhallsh
diff options
context:
space:
mode:
authorProfpatsch <mail@profpatsch.de>2019-09-15 00:29:33 +0200
committerProfpatsch <mail@profpatsch.de>2020-02-24 00:57:55 +0100
commitefd9e66ba8a61e92d92f355d3620b7923c1ccd78 (patch)
tree6ef21774c24ff9d435c08fb77eca7598b84c6f08 /pkgs/profpatsch/dhallsh
parent98f961b23f6551f1b9abd785e2aa0b21c4dc85da (diff)
completion.dhall: add completion options for dhall command line
Diffstat (limited to 'pkgs/profpatsch/dhallsh')
-rw-r--r--pkgs/profpatsch/dhallsh/completion.dhall134
1 files changed, 134 insertions, 0 deletions
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)