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

     1  doc_meta: |
     2    folder: design-patterns
     3    title: modular tasks
     4    head: |
     5      To extend from previous example to show that you can use call func to chain through your tasks so it is more modular and clear
     6  
     7    sections:
     8      - title: Demo
     9        log: yes
    10  
    11  notes:
    12    goal: |
    13      extend c0079 to use composible call to make tasks configuration modular
    14  
    15  vars:
    16    complex_data_structure_template: |
    17      school:
    18        name: '{{.school_name}}'
    19        address: '{{.school_address}}'
    20      principals:
    21      {{- range $_, $p :=.schoo_principals }}
    22        - {{$p}}
    23      {{- end}}
    24      ranking: '{{.schoo_ranking}}'
    25  
    26  dvars:
    27    - name: intest
    28      value: '{{ env "GOTEST" |default "false" }}'
    29  
    30  tasks:
    31    -
    32      name: task
    33      task:
    34        -
    35          func: call
    36          do:
    37            - compose_required_object
    38            - render
    39  
    40    -
    41      name: compose_required_object
    42      desc: prepare the data object for rendering
    43      task:
    44        -
    45          func: cmd
    46          vars:
    47            school_name: sydney grammar
    48            school_address: 1 fox road, sydney, nsw 2000
    49            schoo_principals:
    50              - peter
    51              - tom
    52              - jane
    53            schoo_ranking: No 5
    54          dvars:
    55            - name: school_string
    56              desc: use default expand == 1
    57              value: '{{.complex_data_structure_template}}'
    58          do:
    59            - name: print
    60              cmd: '{{.school_string}}'
    61  
    62        -
    63          func: cmd
    64          vars:
    65            school_name: sydney grammar
    66            school_address: 1 fox road, sydney, nsw 2000
    67            schoo_principals:
    68              - peter
    69              - tom
    70              - jane
    71            schoo_ranking: No 5
    72          dvars:
    73            - name: school_yml
    74              desc: use dynamic expand == 2, so that the template will be rendered
    75              value: '{{.complex_data_structure_template}}'
    76              expand: 2
    77              flags: [reg]
    78          do:
    79            - name: print
    80              cmd: '{{.school_yml}}'
    81  
    82        -
    83          func: cmd
    84          desc: |
    85            show global school_yml var
    86            convert the yml to object so that it could be used in template later
    87          dvars:
    88            - name: school_details
    89              desc: use dynamic expand == 2, so that the template will be rendered
    90              value: '{{.school_yml}}'
    91              flags: [vvv, toObj, reg]
    92          do:
    93            - name: print
    94              cmd: '{{.school_yml}}'
    95            - name: printObj
    96              cmd: 'school_details'
    97            - name: print
    98              cmd: '{{.school_details}}'
    99            - name: printObj
   100              cmd: 'school_details_object'
   101  
   102  
   103    -
   104      name: render
   105      task:
   106  
   107        - func: shell
   108          do:
   109            - echo "?intest ->  {{.intest}}"
   110            - pwd
   111          reg: register_render_root
   112  
   113        - func: cmd
   114          do:
   115            - name: print
   116              cmd: 'intest is: [{{.intest}}]'
   117  
   118            - name: reg
   119              cmd:
   120                name: correct_working_dir
   121                desc: the value of .intest is string but not bool so you can not simple use if .intest for condition
   122                value: >-
   123                  {{if eq .intest "true" }}{{.register_render_root.Output}}{{else}}{{.register_render_root.Output}}{{end}}
   124  
   125        - func: cmd
   126          do:
   127            - name: print
   128              cmd: 'root dir is: [{{.register_render_root.Output}}]'
   129  
   130            - name: print
   131              cmd: 'correct working dir is: [{{.correct_working_dir}}]'
   132  
   133        -
   134          func: cmd
   135          desc: render final result using template
   136          do:
   137            - name: template
   138              desc: render the template file using above dynamic variable from defined var
   139              cmd:
   140                src: '{{.correct_working_dir}}/tests/functests/d0079.template'
   141                dest: /tmp/myschool.txt
   142                datakey: "school_details_object"
   143  
   144        - func: cmd
   145          do:
   146            - name: readFile
   147              desc: read content of a file and register it to a var
   148              cmd:
   149                filename: myschool.txt
   150                dir: /tmp
   151                reg: my_school
   152  
   153            -
   154              name: print
   155              cmd: "{{.my_school}}"