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 }