aboutsummaryrefslogtreecommitdiffstats
path: root/roles/prepare/tasks/except.yml
blob: 8d8abff6aadaa0b268606a37b5dbdaec0ddcb476 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
---
# in this file, default variable value is '-666-', I hope no one will ever
# test the number of the beast :)


- name: Testing 'EXCEPT' condition
  debug:
    var: condition

- name: if condition is only one word
  block:
    - name: check variable is present
      include_tasks: exit.yml
      when: lookup('env', condition)| default(False, true)
  when: condition.split()| length == 1

- name: if condition contains '=='
  block:
    - name: split condition with '=='
      set_fact:
        cond: "{{ (condition|replace(' == ', '==')).split('==') }}"
    - debug: msg="{{ cond[1:]| join('==') }}"
    - name: test condition
      include_tasks: exit.yml
      when: (lookup('env', cond[0])| default('-666-', true)) == (
            cond[1:]| join('=='))
  when: condition is search('==')

- name: if condition contains '!='
  block:
    - name: split condition with '!='
      set_fact:
        cond: "{{ (condition|replace(' != ', '!=')).split('!=') }}"
    - name: test condition
      include_tasks: exit.yml
      when: (lookup('env', cond[0])| default('-666-', true)) != (
            cond[1:]| join('!='))
  when: condition is search('!=')

- name: if condition contains 'in'
  block:
    - name: split condition with ' in '
      set_fact:
        cond: "{{ condition.split(' in ') }}"
    - name: split list
      set_fact:
        inlist: |
          {{ (cond[1]|
              replace(', ', ',')| replace(' ,', ',')|
              replace(' ]', '') | replace(']', '')|
              replace('[ ', '') | replace('[', '')).split(',') }}
    - name: test condition
      include_tasks: exit.yml
      when: (lookup('env', cond[0])| default('-666-', true)) in inlist
  when: condition is search(' in ')