plugin.ymlΒΆ

---
- name: "πŸ“¦ Normalise the install contract for '{{ plugin_name }}'"
  vars:
    wp_plugin_catalog: "{{ lookup('config', application_id, 'addons.' ~ plugin_name ~ '.update.catalog') }}"
  ansible.builtin.set_fact:
    wp_plugin_required: "{{ lookup('config', application_id, 'addons.' ~ plugin_name ~ '.required') | bool }}"
    wp_plugin_pinned: "{{ wp_plugin_catalog == 'github-releases' }}"
    wp_plugin_pinned_version: >-
      {{
        (lookup('config', application_id, 'addons.' ~ plugin_name ~ '.version') | regex_replace('^v', ''))
        if wp_plugin_catalog == 'github-releases'
        else ''
      }}
    wp_plugin_source: >-
      {{
        (
          'https://github.com/'
          ~ lookup('config', application_id, 'addons.' ~ plugin_name ~ '.update.upstream_id')
          ~ '/releases/download/'
          ~ lookup('config', application_id, 'addons.' ~ plugin_name ~ '.version')
          ~ '/' ~ plugin_name ~ '.zip'
        )
        if wp_plugin_catalog == 'github-releases'
        else plugin_name
      }}
  changed_when: false

- name: "πŸ“¦ Install and activate WordPress plugin '{{ plugin_name }}'"
  ansible.builtin.shell:
    cmd: >
      WP_PLUGIN={{ plugin_name | quote }}
      WP_SOURCE={{ wp_plugin_source | trim | quote }}
      WP_PINNED_VERSION={{ wp_plugin_pinned_version | trim | quote }}
      WP_REQUIRED={{ wp_plugin_required | bool | string | lower | quote }}
      WP_NETWORK={{ WORDPRESS_MULTISITE_ENABLED | bool | string | lower | quote }}
      WP_CONTAINER={{ WORDPRESS_CONTAINER_ADDRESS }}
      WP_USER={{ WORDPRESS_USER | quote }}
      WP_PATH={{ WORDPRESS_DOCKER_HTML_PATH | quote }}
      bash -s
    stdin: "{{ lookup('file', 'shell/install_plugin.sh') }}"
  register: wp_plugin_install
  changed_when: "'infinito-changed' in wp_plugin_install.stdout"