github.com/upcmd/up@v0.8.1-0.20230108151705-ad8b797bf04f/tests/functests/c0100.yml (about) 1 doc_meta: | 2 folder: object-oriented 3 title: query 4 head: | 5 query cmd is powerful. It provides a generic way to query either from global runtime vars or a content of yml to register the result to a new var name 6 7 sections: 8 - title: query yml content 9 content: | 10 * ymlkey: use this to point to a var containing the content of yml 11 12 * path: this is a yq like path to use to query/select the node/sub elements/wildcard matched reslt 13 14 * reg: this is the var name to register the queried value 15 16 17 - title: query var object in global runtime scope 18 content: | 19 * ymlkey: not required at all 20 21 * path: this is a path to address an object then follow by dot . assignment for sub element 22 23 24 - title: flags 25 content: | 26 * localOnly: register the result to local func scope but not global runtime scope 27 28 * collect: register the result to be an yml array/list of values 29 30 - title: query using wildcard 31 content: | 32 you can use wildcard format to match your selection criteria 33 34 * datapath: 35 format is like a.b.c(name=fr*).value, following the yq path format: 36 37 1. 'a.b.c' 38 2. 'a.*.c' 39 3. 'a.**.c' 40 4. 'a.(child.subchild==co*).c' 41 5. 'a.array[0].blah' 42 6. 'a.array[*].blah' 43 44 - title: Demo 45 log: yes 46 47 related: 48 refs: 49 - title: yq and yq path reference 50 link: https://github.com/mikefarah/yq 51 52 notes: 53 goal: 54 - add query demo 55 - ymlkey to ref to a var name pointing to a yml string 56 - path is the path refer to yml element, ref to the usage example 57 - reg is the varname register to 58 - | 59 localOnly indicate it is registered to local func var scope only 60 otherwise it will be in global scope 61 - collect is to indicate whether result will be put into array using yml format 62 - ymlOnly will register a query result in yml string instead 63 64 vars: 65 query_name: jason 66 student: 67 name: Tom 68 gender: Male 69 school: Sydney Grammar 70 nsw: 71 sydney: 72 - sg: 73 student: 74 name: Grace 75 gender: Female 76 school: MLC 77 - kings: 78 student: 79 name: Emily 80 gender: Female 81 school: KINGS 82 chatswood: 83 - chatswood_high: 84 student: 85 name: Jason 86 gender: Mail 87 school: Public High School 88 89 tasks: 90 - 91 name: task 92 task: 93 - 94 func: cmd 95 vars: 96 ymlstr: | 97 student: 98 name: jason 99 gender: Male 100 school: The Kings 101 do: 102 - name: query 103 desc: query using ref var ymlstr and query a registered var by default in global 104 cmd: 105 ymlkey: ymlstr 106 path: student.school 107 reg: school_name 108 109 - 110 func: cmd 111 do: 112 - name: print 113 cmd: '{{.school_name}}' 114 115 #-------------------------------------------------------------------- 116 117 - 118 func: cmd 119 vars: 120 ymlstr: | 121 student: | 122 name: jason 123 gender: Male 124 school: The Kings 125 do: 126 - name: query 127 desc: query using ref var ymlstr and query a registered var by default in global 128 cmd: 129 ymlkey: ymlstr 130 path: student 131 reg: student_info 132 133 - 134 func: cmd 135 do: 136 - name: print 137 cmd: '{{.student_info}}' 138 139 #-------------------------------------------------------------------- 140 - 141 func: cmd 142 vars: 143 ymlstr: | 144 student: 145 name: jason 146 gender: Male 147 school: The Kings 148 do: 149 - name: query 150 desc: query and query a registered var in local 151 cmd: 152 ymlkey: ymlstr 153 path: student.school 154 reg: local_school_name 155 flags: [localOnly] 156 - 157 func: cmd 158 do: 159 - name: print 160 cmd: '{{.local_school_name}}' 161 #-------------------------------------------------------------------- 162 163 - 164 func: cmd 165 do: 166 - name: query 167 desc: query from cached vars only 168 cmd: 169 path: nsw.sydney.sg.student.school 170 reg: data_school_name 171 - 172 func: cmd 173 do: 174 - name: print 175 cmd: '{{.data_school_name}}' 176 #-------------------------------------------------------------------- 177 - 178 func: cmd 179 do: 180 - name: query 181 desc: query from cached vars and put result into a list/array 182 cmd: 183 path: nsw.sydney.**.student.school 184 reg: school_name_list 185 flags: [collect] 186 - name: printObj 187 cmd: '{{.school_name_list}}' 188 - name: print 189 cmd: '{{.school_name_list}}' 190 #-------------------------------------------------------------------- 191 - 192 func: cmd 193 do: 194 - name: query 195 desc: query a sub node 196 cmd: 197 path: nsw.sydney 198 reg: city 199 flags: [collect] 200 - name: printObj 201 cmd: '{{.city}}' 202 - name: print 203 cmd: '{{.city}}' 204 #-------------------------------------------------------------------- 205 - 206 func: cmd 207 do: 208 - name: query 209 desc: query a selected indexed node from a array 210 cmd: 211 path: nsw.sydney.[1] 212 reg: city1 213 - name: printObj 214 cmd: '{{.city1}}' 215 - name: print 216 cmd: '{{.city1}}' 217 #-------------------------------------------------------------------- 218 219 - 220 func: cmd 221 do: 222 - name: query 223 desc: query all nodes from an array 224 cmd: 225 path: nsw.sydney.[*] 226 reg: cityall 227 - name: printObj 228 cmd: '{{.cityall}}' 229 - name: print 230 cmd: '{{.cityall}}' 231 #-------------------------------------------------------------------- 232 #TO TEST 233 - 234 func: cmd 235 do: 236 - name: query 237 desc: query result matching the criteria 238 cmd: 239 path: nsw.sydney.[*].*(name==Emily) 240 reg: studentx 241 - name: printObj 242 cmd: '{{.studentx}}' 243 - name: print 244 cmd: '{{.studentx}}' 245 246 - 247 func: cmd 248 do: 249 - name: query 250 desc: query result matching the criteria 251 cmd: 252 path: nsw.sydney.[1].*(name==Emily) 253 reg: studenty 254 - name: printObj 255 cmd: '{{.studenty}}' 256 257 - 258 func: cmd 259 do: 260 - name: query 261 desc: query result matching the criteria 262 cmd: 263 path: nsw.sydney.**(name==Emily) 264 reg: studentz 265 - name: printObj 266 cmd: '{{.studentz}}' 267 268 - 269 func: cmd 270 do: 271 - name: query 272 desc: query result matching the criteria 273 cmd: 274 path: nsw.sydney.[*].kings(name==Emily) 275 reg: studentm 276 - name: printObj 277 cmd: '{{.studentm}}' 278 279 - 280 func: cmd 281 do: 282 - name: query 283 desc: query result matching the criteria 284 cmd: 285 path: nsw.sydney.[*].*(name==Grace) 286 reg: studentn 287 - name: printObj 288 cmd: '{{.studentn}}' 289 290 - 291 func: cmd 292 do: 293 - name: query 294 desc: query result matching the criteria 295 cmd: 296 path: nsw.chatswood.[*] 297 reg: studento 298 - name: printObj 299 cmd: '{{.studento}}' 300 301 #-------------------------------------------------------------------- 302 - 303 func: cmd 304 do: 305 - name: query 306 desc: query and register result as a yml string instead of object 307 cmd: 308 path: nsw. 309 reg: city2 310 flags: [ymlOnly] 311 312 - name: trace 313 cmd: ====> 314 - name: printObj 315 cmd: '{{.city2}}' 316 - name: print 317 cmd: '{{.city2}}' 318 - name: print 319 cmd: '{{.city2|len}}' 320 - name: trace 321 cmd: <==== 322 #-------------------------------------------------------------------- 323 - 324 func: cmd 325 do: 326 - name: query 327 desc: query result from yml file using refdir 328 cmd: 329 ymlfile: d0100.yml 330 refdir: ./tests/functests 331 path: nsw. 332 reg: city2 333 flags: [ymlOnly] 334 335 - name: print 336 cmd: '{{.city2}}' 337 338 #-------------------------------------------------------------------- 339 - 340 func: cmd 341 do: 342 - name: query 343 desc: query result from yml file using implicit global refdir 344 cmd: 345 ymlfile: d0100.yml 346 path: nsw. 347 reg: city2 348 flags: [ymlOnly] 349 350 351 - name: print 352 cmd: '{{.city2}}'