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}}'