- DocumentID: summary
  Title: >+
    `summary` 
  CategoryID: commands
  Summary: >-
    Defines a summary help text for a command
  Description: |-
    `summary` define help text for a command. This is effectively like a tooltip
    message that appears, by default, in blue in the interactive shell.

    Normally this text is populated from the `man` pages or `murex-docs`, however
    if neither exist or if you wish to override their text, then you can use
    `summary` to define that text.
  Usage: |-
    Define a commands summary

    ```
    summary command description
    ```

    Undefine a summary

    ```
    !summary command
    ```

  Examples: |-
    Define a commands summary

    ```
    » summary: foobar "Hello, world!"
    » runtime: --summaries -> [ foobar ]
    Hello, world! 
    ```

    Undefine a summary

    ```
    » !summary: foobar
    ```
  Flags:
  Detail:
  Synonyms:
  - summary
  - "!summary"
  Related:
  - config
  - runtime
  - murex-docs
  - murex-update-exe-list
  - builtins
  - bexists
  - exec
  - fid-list



- DocumentID: murex-parser
  Title: >+
    `murex-parser` 
  CategoryID: commands
  Summary: >-
    Runs the Murex parser against a block of code 
  Description: |-
    `summary` define help text for a command. This is effectively like a tooltip
    message that appears, by default, in blue in the interactive shell.

    Normally this text is populated from the `man` pages or `murex-docs`, however
    if neither exist or if you wish to override their text, then you can use
    `summary` to define that text.
  Usage: |-
    ```
    <stdin> -> murex-parser -> <stdout>

    murex-parser { code-block } -> <stdout>
    ```
  Examples:
  Flags:
  Detail:
    Please note this command is still very much in beta and is likely to change
    in incompatible ways in the future. If you do happen to like this command
    and/or have any suggestions on how to improve it, then please leave your
    feedback on the GitHub repository, https://github.com/lmorg/murex
  Synonyms:
  Related:
  - config
  - runtime
  - murex-docs



- DocumentID: args
  Title: >+
    `args` 
  CategoryID: commands
  Summary: >-
    Command line flag parser for Murex shell scripting
  Description: |-
    One of the nuisances of shell scripts is handling flags. More often than not
    your script will be littered with `$1` still variables and not handle flags
    shifting in placement amongst a group of parameters. `args` aims to fix that by
    providing a common tool for parsing flags.

    `args` takes a name of a variable to assign the result of the parsed parameters
    as well as a JSON structure containing the result. It also returns a non-zero
    exit number if there is an error when parsing.
  Usage: |-
    ```
    args var-name { json-block } -> <stdout>
    ```
  Examples: |-
    ```
    {{ include "examples/flags.mx" }}
    ```
  Flags:
  Detail:
  Synonyms:
  Related:
  - user-guide/reserved-vars



- DocumentID: man-get-flags
  Title: >+
    `man-get-flags` 
  CategoryID: commands
  Summary: >-
    Parses man page files for command line flags 
  Description: |-
    Sometimes you might want to programmatically search `man` pages for any
    supported flag. Particularly if you're writing a dynamic autocompletion.
    `man-get-flags` does this and returns a JSON document.

    You can either pipe a man page to `man-get-flags`, or pass the name of the
    command as a parameter.

    `man-get-flags` returns a JSON document. Either an array or an object,
    depending on what flags (if any) are passed.

    If no flags are passed, `man-get-flags` will default to just parsing the man
    page for anything that looks like a flag (ie no descriptions or other detail).
  Usage: |-
    ```
    <stdin> -> man-get-flags [--descriptions] -> <stdout>

    man-get-flags command [--descriptions] -> <stdout>
    ```
  Examples: |-
    ```
    » man-get-flags --descriptions find -> [{$.key =~ 'regex'}]
    {
        "-iregex": "eg: pattern -- Like -regex, but the match is case insensitive.",
        "-regex": "eg: pattern -- True if the whole path of the file matches pattern using regular expression.  To match a file named “./foo/xyzzy”, you can use the regular expression “.*/[xyz]*” or “.*/foo/.*”, but not “xyzzy” or “/foo/”."
    }
    ```
  Flags:
    --descriptions: >-
      return a map of flags with their described usage
    -d: >-
      shorthand for `--descriptions`
  Detail: |-
    ### Limitations

    Due to the freeform nature of man pages - that they're intended to be human
    readable rather than machine readable - and the flexibility that developers
    have to parse command line parameters however they wish, there will always be
    a margin for error with how reliably any parser can autodetect parameters. one
    requirement is that flags are hyphen prefixed, eg `--flag`.
  Synonyms:
  Related:
  - murex-docs
  - summary
  - man-summary