150 lines
4.7 KiB
YAML
150 lines
4.7 KiB
YAML
---
|
|
|
|
- name: Read apps shipped with Nextcloud
|
|
command: php occ app:list --shipped=true --no-warnings --output=json
|
|
args:
|
|
chdir: "{{ nextcloud_installation_dir }}"
|
|
become: true
|
|
become_user: "{{ nextcloud_file_owner }}"
|
|
register: _result
|
|
changed_when: false
|
|
|
|
- name: Parse occ command response as JSON
|
|
set_fact:
|
|
nextcloud_shipped_apps: "{{ _result.stdout | from_json }}"
|
|
|
|
- name: Read external apps installed by the user
|
|
command: php occ app:list --shipped=false --no-warnings --output=json
|
|
args:
|
|
chdir: "{{ nextcloud_installation_dir }}"
|
|
become: true
|
|
become_user: "{{ nextcloud_file_owner }}"
|
|
register: _result
|
|
changed_when: false
|
|
|
|
- name: Parse occ command response as JSON
|
|
set_fact:
|
|
nextcloud_installed_apps: "{{ _result.stdout | from_json }}"
|
|
|
|
- name: Remove unknown external apps
|
|
command: php occ app:remove "{{ item.key }}"
|
|
loop: >-
|
|
{{
|
|
nextcloud_installed_apps.enabled
|
|
| combine(nextcloud_installed_apps.disabled)
|
|
| dict2items
|
|
}}
|
|
become: true
|
|
become_user: "{{ nextcloud_file_owner }}"
|
|
args:
|
|
chdir: "{{ nextcloud_installation_dir }}"
|
|
register: result
|
|
failed_when: result.stdout is not search('removed') or result is failed
|
|
changed_when: result is not failed
|
|
when:
|
|
- nextcloud_remove_unknown_apps | bool
|
|
- not (nextcloud_apps | selectattr('name', 'search', item.key) | list)
|
|
|
|
- name: Remove unwanted external apps
|
|
command: php occ app:remove "{{ item.name }}"
|
|
loop: "{{ nextcloud_apps }}"
|
|
become: true
|
|
become_user: "{{ nextcloud_file_owner }}"
|
|
args:
|
|
chdir: "{{ nextcloud_installation_dir }}"
|
|
register: result
|
|
failed_when: result.stdout is not search('removed') or result is failed
|
|
changed_when: result is not failed
|
|
when:
|
|
- item.name in (nextcloud_installed_apps.enabled
|
|
| combine(nextcloud_installed_apps.disabled))
|
|
- item.state | default('enabled') == 'absent'
|
|
|
|
# Install all apps from the configured list which
|
|
# - are external apps (not in the shipped apps list) and
|
|
# - are not yet installed (not in the installed apps list) and
|
|
# - have their state not set to "absent"
|
|
- name: Install external apps
|
|
command: php occ app:install "{{ item.name }}"
|
|
loop: "{{ nextcloud_apps }}"
|
|
become: true
|
|
become_user: "{{ nextcloud_file_owner }}"
|
|
args:
|
|
chdir: "{{ nextcloud_installation_dir }}"
|
|
register: result
|
|
failed_when: result.stdout is not search('installed') or result is failed
|
|
changed_when: result is not failed
|
|
when:
|
|
- item.name not in (nextcloud_shipped_apps.enabled
|
|
| combine(nextcloud_shipped_apps.disabled))
|
|
- item.name not in (nextcloud_installed_apps.enabled
|
|
| combine(nextcloud_installed_apps.disabled))
|
|
- item.state | default('enabled') != 'absent'
|
|
notify: nextcloud set file permissions
|
|
|
|
# Update list of available apps after installation and removal:
|
|
- name: Re-read installed external apps
|
|
command: php occ app:list --shipped=false --no-warnings --output=json
|
|
args:
|
|
chdir: "{{ nextcloud_installation_dir }}"
|
|
become: true
|
|
become_user: "{{ nextcloud_file_owner }}"
|
|
register: _result
|
|
changed_when: false
|
|
|
|
- name: Parse occ command response as JSON
|
|
set_fact:
|
|
nextcloud_installed_apps: "{{ _result.stdout | from_json }}"
|
|
|
|
# Check and update all external apps
|
|
- name: Update external apps
|
|
command: php occ app:update "{{ item.key }}"
|
|
loop: >-
|
|
{{
|
|
nextcloud_installed_apps.enabled
|
|
| combine(nextcloud_installed_apps.disabled)
|
|
| dict2items
|
|
}}
|
|
become: true
|
|
become_user: "{{ nextcloud_file_owner }}"
|
|
args:
|
|
chdir: "{{ nextcloud_installation_dir }}"
|
|
register: result
|
|
failed_when: result.stdout is search('not installed') or result is failed
|
|
changed_when: result.stdout is search('updated') and result is not failed
|
|
notify: nextcloud set file permissions
|
|
|
|
# Enable all apps from the configured list which
|
|
# - are not yet enabled and
|
|
# - have their state set to "enabled"
|
|
- name: Enable apps
|
|
command: php occ app:enable "{{ item.name }}"
|
|
args:
|
|
chdir: "{{ nextcloud_installation_dir }}"
|
|
become: true
|
|
become_user: "{{ nextcloud_file_owner }}"
|
|
loop: "{{ nextcloud_apps }}"
|
|
when:
|
|
- (item.state | default('enabled')) == 'enabled'
|
|
- item.name not in (
|
|
nextcloud_installed_apps.enabled
|
|
| combine(nextcloud_shipped_apps.enabled)
|
|
)
|
|
|
|
# Disable all apps from the configured list which
|
|
# - are not yet disabled and
|
|
# - have their state set to "disabled"
|
|
- name: Disable apps
|
|
command: php occ app:disable "{{ item.name }}"
|
|
args:
|
|
chdir: "{{ nextcloud_installation_dir }}"
|
|
become: true
|
|
become_user: "{{ nextcloud_file_owner }}"
|
|
loop: "{{ nextcloud_apps }}"
|
|
when:
|
|
- (item.state | default('enabled')) == 'disabled'
|
|
- item.name not in (
|
|
nextcloud_installed_apps.disabled
|
|
| combine(nextcloud_shipped_apps.disabled)
|
|
)
|