github.com/upcmd/up@v0.8.1-0.20230108151705-ad8b797bf04f/tests/functests/c0090.yml (about)

     1  doc_meta: |
     2    folder: loop
     3    title: loopitem in dvar
     4    head: |
     5      This showcases that the loopitem, loopindex should be available in the dvar as reference. This will be useful when you use a call func to loop through a list of items
     6  
     7    sections:
     8      - title: Demo
     9        log: yes
    10  
    11      - title: Note
    12        content: |
    13          As self explained in the wrong_usage desc, you can't access loopitem in dvars in current stack. There are two ways you will have to access loopitem in dvar processing:
    14          1. shown as correct_usage, use call to delegate loop process to a callee task
    15          2. use block func, so the dvar in any func in actually in the callee stack
    16  
    17  notes:
    18    goal:
    19      - make loop item and index parsablele in dvar
    20      - loopitem and index will never be availab in dvar expansion phase as designed
    21  
    22  tasks:
    23    -
    24      name: task
    25      task:
    26  
    27        - func: cmd
    28          name: wrong_usage
    29          desc: |
    30            note that you can't access loopitem in dvar processing in curent func
    31            you can only access loopitem in dvar processing when it is called as callee, as corret_usage shows
    32            however you can access loopitem in do action
    33          dvars:
    34            - name: person
    35              value: '{{.loopitem}}'
    36              flags:
    37                - v
    38          loop:
    39            - tom
    40            - peter
    41            - james
    42          do:
    43            - name: print
    44              cmd: |
    45                loopitme could be accessed here: {{.loopitem}}
    46  
    47        - func: call
    48          name: corret_usage
    49          vars:
    50            taskvar: taskvar
    51          do:
    52            - task_callee2
    53          loop:
    54            - tom
    55            - peter
    56            - james
    57  
    58    -
    59      name: task_callee1
    60      task:
    61        - func: cmd
    62          do:
    63            -
    64              name: print
    65              cmd: 'hello {{.loopitem}}'
    66    -
    67      name: task_callee2
    68      task:
    69        - func: cmd
    70          dvars:
    71            - name: person
    72              value: '{{.loopitem}}'
    73              flags: [v]
    74          do:
    75            -
    76              name: print
    77              desc: as explained, this should be <no value>
    78              cmd: 'callee2: {{.person}}'
    79            -
    80              name: print
    81              desc: |
    82                this will be the loopitem from parent caller's
    83                var space and this is design
    84              cmd: 'callee2: {{.loopitem}}'
    85            -
    86              name: print
    87              cmd: 'callee2: {{.greet}}'
    88            -
    89              name: print
    90              cmd: 'taskvar: {{.taskvar}}'