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"