github.com/upcmd/up@v0.8.1-0.20230108151705-ad8b797bf04f/tests/functests/c0037.yml (about) 1 doc_meta: | 2 folder: template 3 title: sprig funcs 4 head: | 5 Demo usecases of sprig golang template functions 6 7 sections: 8 - title: Showcase deal with data types 9 content: Please refer to usage relating to dict/map/slice/b64 10 11 - title: env variables 12 content: | 13 ``` 14 - name: sprig_os_env 15 value: '{{ env "HOME"}}' 16 flags: [vvvv,] 17 18 - name: sprig_os_env_expand 19 value: '{{ expandenv "Your path is set to $PATH" }} ' 20 flags: [vvvv,] 21 ``` 22 23 * env func get the value of HOME 24 * expandenv func is to expand and subsitude the value in runtime 25 26 - title: showcase encrpt and decrypt using dynamic var 27 content: | 28 Please notice the usage of encrypt and decrypt examples: 29 ``` 30 - name: sprig_encrypt_AES 31 value: '{{ encryptAES "secretkey" "plaintext" }}' 32 flags: [vvvv,] 33 34 - name: sprig_decrypt_AES 35 value: '{{ print .sprig_encrypt_AES |decryptAES "secretkey" }}' 36 flags: [vvvv,] 37 38 - name: sprig_AES_key 39 value: '{{ printf "%s-%s" .pod_name .ns }}' 40 flags: [vvvv,] 41 42 - name: sprig_encrypt_AES_using_key_var 43 value: '{{ encryptAES .sprig_AES_key "plaintext" }}' 44 flags: [vvvv,] 45 46 - name: sprig_decrypt_AES_using_key_var 47 value: '{{ print .sprig_encrypt_AES_using_key_var |decryptAES .sprig_AES_key }}' 48 flags: [vvvv,] 49 ``` 50 51 - title: Demo 52 log: yes 53 54 related: 55 refs: 56 - title: sprig reference 57 link: http://masterminds.github.io/sprig/ 58 59 60 notes: 61 doc: 62 - | 63 Pipeline is a unique Go templating feature, which 64 allows to declare expressions that can be executed 65 in a manner similar to shell pipeline. Formally, a 66 pipeline is a chained sequence of commands separated 67 by | symbol. A command can be a simple value or a 68 function call. The result of each command is passed 69 as the last argument to the following command. The 70 output of the final command in the pipeline is the 71 value of the whole pipeline. 72 73 A command is allowed to return one or two values, 74 the second of which must be of error type. If command 75 returns two values and the second value evaluates to 76 non-nil, execution terminates and the error is 77 returned to the caller of Execute. 78 79 - | 80 It means that you can't always use a func as pipe if 81 the result can not be served as last argument, then you 82 will have to use assignment and code 83 84 refs: 85 skip: lower, title, untitle 86 doc: http://masterminds.github.io/sprig/ 87 88 goal: 89 - to test and show sprig funcs usage and examples 90 - ref to the doc link for more examples 91 - showcase encrpt and decrypt using dynamic var 92 - showcase dict/map/slice/b64/envexpand and more 93 94 vars: 95 ns: prod 96 pod_name: web_app 97 ha: true 98 age: 34 99 old: 54 100 admins: [tom, jason, alice] 101 managers: 102 - tom 103 - jason 104 - alice 105 student: 106 name: Tom 107 gender: Male 108 teachers: 109 - tom 110 - jason 111 - alice 112 address: 113 suburb: 114 name: sydney 115 postcode: 2000 116 CBD: yes 117 school: Sydney Grammar 118 119 120 121 dvars: 122 123 - name: sprig_trim 124 value: '{{ trim " hello "}}' 125 desc: The trim function removes space from either side of a string 126 flags: [vvvv,] 127 128 - name: sprig_trim_all 129 value: '{{ trimAll "$" "$5.00"}}' 130 desc: Remove given characters from the front or back of a string 131 flags: [vvvv,] 132 133 - name: sprig_trim_suffix 134 value: '{{ trimSuffix "-" "hello-"}}' 135 desc: Trim just the suffix from a string 136 flags: [vvvv,] 137 138 - name: sprig_trim_prefix 139 value: '{{ trimPrefix "-" "-hello"}}' 140 desc: Trim just the preffix from a string 141 flags: [vvvv,] 142 143 - name: sprig_upper 144 value: '{{ upper .pod_name}}' 145 flags: [vvvv,] 146 147 - name: sprig_repeat 148 value: '{{ repeat 3 .pod_name }}' 149 flags: [vvvv,] 150 151 - name: sprig_repeat_with_space 152 value: '{{ printf "%s%s%s" " [" .pod_name "] "}}' 153 flags: [vvvv,] 154 155 - name: sprig_repeat_with_space_repeat 156 value: '{{ printf "%s%s%s" " [" .pod_name "] " |repeat 3}}' 157 flags: [vvvv,] 158 159 - name: sprig_substring 160 value: '{{ substr 0 5 "hello world" }}' 161 flags: [vvvv,] 162 163 - name: sprig_nospace 164 value: '{{ nospace "hello w o r l d" }}' 165 flags: [vvvv,] 166 167 - name: sprig_encrypt_AES 168 value: '{{ encryptAES "secretkey" "plaintext" }}' 169 flags: [vvvv,] 170 171 - name: sprig_decrypt_AES 172 value: '{{ print .sprig_encrypt_AES |decryptAES "secretkey" }}' 173 flags: [vvvv,] 174 175 - name: sprig_AES_key 176 value: '{{ printf "%s-%s" .pod_name .ns }}' 177 flags: [vvvv,] 178 179 - name: sprig_encrypt_AES_using_key_var 180 value: '{{ encryptAES .sprig_AES_key "plaintext" }}' 181 flags: [vvvv,] 182 183 - name: sprig_decrypt_AES_using_key_var 184 value: '{{ print .sprig_encrypt_AES_using_key_var |decryptAES .sprig_AES_key }}' 185 flags: [vvvv,] 186 187 - name: sprig_slice 188 value: '{{ slice .admins 1 3 }}' 189 flags: [vvvv,] 190 191 - name: sprig_slice_new 192 value: '{{ list 1 2 3 4 5 |print }}' 193 flags: [vvvv,] 194 195 - name: sprig_slice_assign 196 value: '{{ $myList := list 1 2 3 4 5 }} 197 {{ print $myList }} 198 ' 199 flags: [vvvv,] 200 201 202 - name: sprig_slice_append 203 value: '{{ $myList := list 1 2 3 4 5 }} 204 {{ $newlist := append $myList 6 }} 205 {{ print $newlist }} 206 ' 207 flags: [vvvv,] 208 209 - name: sprig_slice_concat 210 value: '{{ $myList := list 1 2 3 4 5 }} 211 {{ $newlist:=concat $myList ( list 6 7 ) ( list 8 ) }} 212 {{ print $newlist }} 213 ' 214 flags: [vvvv,] 215 216 - name: sprig_slice_reverse 217 value: '{{ list 1 2 3 4 5 |reverse }}' 218 flags: [vvvv,] 219 220 221 - name: sprig_slice_uniq 222 value: '{{ list 1 4 2 3 3 4 5 |uniq }}' 223 flags: [vvvv,] 224 225 - name: var_slice_index 226 desc: check if the builtin will still work 227 value: "{{ index .admins 1 }}" 228 flags: [vvvv,] 229 230 # - name: sprig_slice_filter_out 231 # value: '{{ list 1 2 3 4 5 |without 1 3 }}' 232 # desc: how to use pipe out instead??? 233 # flags: [vvvv,] 234 235 - name: sprig_slice_filter_out 236 value: '{{ $myList := list 1 2 3 4 5 }} 237 {{ without $myList 2 3 5 |print}} 238 ' 239 flags: [vvvv,] 240 241 - name: sprig_slice_contains 242 value: '{{ list 1 2 3 4 5 |has 4 }}' 243 desc: Test to see if a list has a particular element 244 flags: [vvvv,] 245 246 - name: sprig_string_contains 247 value: '{{ "hello, world" |contains "world"}}' 248 desc: Test if a string contains substr 249 flags: [v,] 250 251 - name: sprig_slice_compact 252 value: '{{ $list := list 1 "a" "foo" "" }} 253 {{ $copy := compact $list }} 254 {{ print $copy }}' 255 desc: compact will return a new list with the empty (i.e., “”) item removed 256 flags: [vvvv,] 257 258 - name: sprig_b64enc 259 value: '{{ .pod_name|b64enc }}' 260 flags: [vvvv,] 261 262 - name: sprig_b64dec 263 value: '{{ .sprig_b64enc |b64dec }} ' 264 flags: [vvvv,] 265 266 - name: random_hello 267 value: '{{ hello }}' 268 flags: [vvvv,] 269 270 - name: random_hello_plain 271 value: '{{ "hi, tom"}}' 272 flags: [vvvv,] 273 274 - name: sprig_os_env 275 value: '{{ env "HOME"}}' 276 flags: [vvvv,] 277 278 - name: sprig_os_env_expand 279 value: '{{ expandenv "Your path is set to $PATH" }} ' 280 flags: [vvvv,] 281 282 - name: sprig_dict 283 value: ' 284 {{ $myDict := dict "name1" "value1" "name2" "value2" "name3" "value 3" }} 285 {{ println $myDict}} 286 {{ print $myDict.name2}} 287 ' 288 flags: [vvvv,] 289 290 - name: sprig_dict_access 291 value: ' 292 {{ println .student.address}} 293 ' 294 flags: [vvvv,] 295 296 - name: sprig_dict_access_using_func 297 value: ' 298 {{ get .student "address"}} 299 ' 300 desc: checkout other dic/map funcs here http://masterminds.github.io/sprig/dicts.html 301 flags: [vvvv,] 302 303 - name: add1 304 value: '{{ add1 "100" }}' 305 flags: [vvvv,] 306 307 - name: add 308 value: '{{ add "100" "23" }}' 309 flags: [vvvv,] 310 311 - name: convert_and_add1 312 value: '{{ atoi "010" | add1 }}' 313 flags: [vvvv,] 314 315 - name: convert_and_add1_2 316 value: '{{ atoi "0010" | add1 }}' 317 flags: [vvvv,] 318 319 - name: sprig_substring2 320 value: '{{ substr 1 5 "c0011" }}' 321 flags: [vvvv,] 322 323 - name: sprig_word_count 324 value: '{{ wordcount "c0011 asdf hello" }}' 325 flags: [vvv,] 326 327 - name: sprig_muliply 328 value: '{{ mul 4 5 3 }}' 329 flags: [vvv,] 330 331 - name: sprig_date 332 desc: 20060102 is the format 333 value: '{{now|date "20060102"}}' 334 flags: [v,] 335 336 tasks: 337 - 338 name: task 339 task: 340 341 - 342 func: shell 343 do: 344 - echo "check the value of other dvar using vvvv flag print out"