From f2c5aedc523358a46836de2ab85f30b0042c4a49 Mon Sep 17 00:00:00 2001 From: Felix Stupp Date: Fri, 1 Jan 2021 10:39:25 +0100 Subject: [PATCH] server/nextcloud: Add extract_app_list helper script --- roles/server/nextcloud/defaults/main.yml | 1 + roles/server/nextcloud/tasks/main.yml | 18 ++++++++++ .../templates/scripts/extract_app_list.py | 33 +++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 roles/server/nextcloud/templates/scripts/extract_app_list.py diff --git a/roles/server/nextcloud/defaults/main.yml b/roles/server/nextcloud/defaults/main.yml index 64a9a13..2df2d14 100644 --- a/roles/server/nextcloud/defaults/main.yml +++ b/roles/server/nextcloud/defaults/main.yml @@ -13,6 +13,7 @@ nextcloud_release_remote_signature: "{{ nextcloud_release_remote }}.asc" user_directory: "{{ global_webservers_directory }}/{{ domain }}" nextcloud_installation_directory: "{{ user_directory }}/nextcloud" # directory name of inside downloaded tar zip nextcloud_data_directory: "{{ user_directory }}/data" +scripts_directory: "{{ user_directory }}/scripts" nextcloud_keyring: "{{ user_directory }}/nextcloud.gpg" nextcloud_release_file: "{{ user_directory }}/nextcloud.tar.bz2" diff --git a/roles/server/nextcloud/tasks/main.yml b/roles/server/nextcloud/tasks/main.yml index 8dd2e17..dd53a22 100644 --- a/roles/server/nextcloud/tasks/main.yml +++ b/roles/server/nextcloud/tasks/main.yml @@ -91,6 +91,24 @@ tags: - nextcloud_config +- name: Create scripts directories + file: + state: directory + path: "{{ scripts_directory }}" + owner: "{{ system_user }}" + group: "{{ system_user }}" + mode: "u=rwx,g=rx,o=" + +- name: Install helper scripts + template: + src: "scripts/{{ item }}" + dest: "{{ scripts_directory }}/{{ item }}" + owner: "{{ system_user }}" + group: "{{ system_user }}" + mode: "u=rwx,g=rx,o=" + loop: + - extract_app_list.py + - name: Install Nextcloud apps become_user: "{{ system_user }}" command: >- diff --git a/roles/server/nextcloud/templates/scripts/extract_app_list.py b/roles/server/nextcloud/templates/scripts/extract_app_list.py new file mode 100644 index 0000000..ad53a98 --- /dev/null +++ b/roles/server/nextcloud/templates/scripts/extract_app_list.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python3 + +import getpass +import subprocess +import json +import sys + +NC_USER = """{{ system_user }}""" +NC_INSTALL_DIR = """{{ nextcloud_installation_directory }}""" + +if __name__ == "__main__": + args_list = [ + "/usr/bin/env", + "php", + "occ", + "app:list", + "--output=json" + ] + if getpass.getuser() != NC_USER: + args_list = [ + "sudo", + "-u", NC_USER, + ] + args_list + try: + proc = subprocess.run(args_list, capture_output=True, check=True, cwd=NC_INSTALL_DIR, text=True) + except subprocess.CalledProcessError as e: + print(e.stderr, file=sys.stderr) + raise e + apps_nc = json.loads(proc.stdout) + for name, apps in reversed(sorted(apps_nc.items())): + print(f"{name}_apps_list:") + for app_name in apps: + print(f" - {app_name}")