github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/lang/expressions/testcode/testcode_oa_image.mx (about)

     1  openagent set image {
     2      $ARGS[1] -> set file
     3      config get open image -> set mode
     4  
     5      if { = mode==`auto` } {
     6          switch {
     7              case { $TMUX }                 { set mode=compatible }
     8              case { $KITTY_WINDOW_ID }      { set mode=kitty }
     9              case { = TERM==`xterm-kitty` } { set mode=kitty }
    10              case { $TERMINOLOGY }          { set mode=terminology }
    11              case { = TERM_PROGRAM==`iTerm.app` } { set mode=iterm }
    12              case { $ITERM_PROFILE }        { set mode=iterm }
    13              catch                          { set mode=compatible }
    14          }
    15      }
    16  
    17      # If Kitty but running inside a screen / tmux session, fallback to compatible.
    18      # We do this because tmux doesn't support reporting screen sizes via the TIOCGWINSZ ioctl.
    19      if { and { = mode==`kitty` } { = TERM==`screen` } } {
    20          set mode=compatible
    21      }
    22  
    23      switch $mode {
    24          case compatible {
    25              open-image $file
    26          }
    27  
    28          case kitty {
    29              try {
    30                  kitty icat $file
    31              }
    32              catch {
    33                  err "Error running `kitty`. Please check `kitty` is installed."
    34              }
    35          }
    36  
    37          case iterm {
    38              out "{ESC}]1337;File=inline=1:${base64 $file}{^G}"
    39          }
    40  
    41          case terminology {
    42              try {
    43                  tycat -c $file
    44              }
    45              catch {
    46                  err "Error running `tycat`. Please check `terminology` is installed."
    47              }
    48          }
    49  
    50          case sixel {
    51              try {
    52                  img2sixel $file
    53              }
    54              catch {
    55                  err "Error running `img2sixel`. Please check `libsixel` is installed."
    56              }
    57          }
    58  
    59          catch {
    60              out "Invalid rendering method. Please define in `config set open image` - 'auto' is recommended."
    61          }
    62      }
    63  }
    64  
    65  if { which: microk8s } then {
    66  
    67      private autocomplete.microk8s {
    68          # Top level completion results for microk8s
    69          microk8s -> tabulate -> cast str
    70      }
    71  
    72      test: unit private autocomplete.microk8s {
    73          "StdoutType":  "str",
    74          "StdoutBlock": ({
    75              -> len -> set len;
    76              if { = len>0 } then {
    77                  out "Len greater than 0"
    78              } else {
    79                  err "No elements returned"
    80              }
    81          }),
    82          "StdoutIsArray": true
    83      }
    84  
    85      private autocomplete.microk8s.kubectl {
    86          # Top level completion results for microk8s kubectl
    87          microk8s kubectl help -> tabulate: --map
    88      }
    89  
    90      test: unit private autocomplete.microk8s.kubectl {
    91          "StdoutType":  "json",
    92          "StdoutBlock": ({
    93              -> len -> set len;
    94              if { = len>0 } then {
    95                  out "Len greater than 0"
    96              } else {
    97                  err "No elements returned"
    98              }
    99          }),
   100          "StdoutIsMap": true
   101      }
   102  
   103      private autocomplete.microk8s.kubectl.dyndesc {
   104          # Dynamic completion for microk8s kubectl
   105          microk8s kubectl help $ARGS[1] -> @[^Options..^Usage]re -> regexp "s/:/\t/" -> tabulate: --key-inc-hint --map --split-comma
   106      }
   107  
   108      autocomplete: set microk8s {[
   109          {
   110              "Dynamic": ({ autocomplete.microk8s }),
   111              "AllowMultiple": false,
   112              "FlagValues": {
   113                  "kubectl": [
   114                      {
   115                          "DynamicDesc":   ({ autocomplete.microk8s.kubectl }),
   116                          "ListView": true,
   117                          "AllowMultiple": false,
   118                          "Optional": false
   119                      },
   120                      {
   121                          #"DynamicDesc":   ({ autocomplete.microk8s.kubectl.dyndesc $ARGS[2] }),
   122                          "Dynamic": ({ out @ARGS }),
   123                          "AllowMultiple": true,
   124                          "AnyValue":      true
   125                          #"ListView":      true
   126                      }
   127                  ]
   128              }
   129          }
   130      ]}
   131  
   132      autocomplete: set microk8s.kubectl {[
   133          {
   134              "DynamicDesc":   ({ autocomplete.microk8s.kubectl }),
   135              "ListView": true,
   136              "AllowMultiple": false,
   137              "Optional": false
   138          },
   139          {
   140              "DynamicDesc":   ({ autocomplete.microk8s.kubectl.dyndesc $ARGS[1] }),
   141              #"Dynamic": ({ out @ARGS }),
   142              "AllowMultiple": true,
   143              "AnyValue":      true,
   144              "ListView":      true
   145          }
   146      ]}
   147  
   148      autocomplete: set kubectl {[
   149          {
   150              "DynamicDesc":   ({ autocomplete.microk8s.kubectl }),
   151              "ListView": true,
   152              "AllowMultiple": false,
   153              "Optional": false
   154          },
   155          {
   156              "DynamicDesc":   ({ autocomplete.microk8s.kubectl.dyndesc $ARGS[2] }),
   157              #"Dynamic": ({ out @ARGS }),
   158              "AllowMultiple": true,
   159              "AnyValue":      true,
   160              "ListView":      true
   161          }
   162      ]}
   163  }