#!/usr/bin/env bash set -euo pipefail script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "${script_dir}/lib-compose-project.sh" compose_file="docker-compose.devprod.yml" env_file=".env.devprod" usage() { cat <<'USAGE' Usage: ./scripts/clear-nextcloud-appdata-assets.sh [options] Options: --compose-file Compose file to use (default: docker-compose.devprod.yml) --env-file Env file to use (default: .env.devprod) -h, --help Show this help USAGE } while [[ $# -gt 0 ]]; do case "$1" in --compose-file) compose_file="$2" shift 2 ;; --env-file) env_file="$2" shift 2 ;; -h|--help) usage exit 0 ;; *) echo "Unknown option: $1" usage exit 1 ;; esac done if [[ -f "${env_file}" ]]; then export_compose_project_name_from_env "${env_file}" || true fi ensure_docker_access() { local docker_path="" docker_path="$(type -P docker || true)" if [[ -z "${docker_path}" ]]; then echo "docker is required" exit 1 fi if "${docker_path}" info >/dev/null 2>&1; then DOCKER_CMD=("${docker_path}") return 0 fi if ! command -v sudo >/dev/null 2>&1; then echo "docker is installed but this user cannot access it, and sudo is unavailable." exit 1 fi if sudo -n "${docker_path}" info >/dev/null 2>&1; then DOCKER_CMD=(sudo "${docker_path}") echo "Using sudo for docker commands." return 0 fi echo "docker requires elevated privileges on this machine." echo "You may be prompted for your sudo password." if sudo "${docker_path}" info >/dev/null 2>&1; then DOCKER_CMD=(sudo "${docker_path}") echo "Using sudo for docker commands." return 0 fi echo "Unable to access docker, even with sudo." exit 1 } docker() { "${DOCKER_CMD[@]}" "$@" } ensure_docker_access docker compose -f "${compose_file}" --env-file "${env_file}" exec -T -u root app sh -lc ' set -eu for base in /var/www/html/data/appdata_*; do [ -d "${base}" ] || continue for asset in js css; do dir="${base}/${asset}" if [ -d "${dir}" ]; then find "${dir}" -mindepth 1 -type f -delete find "${dir}" -mindepth 1 -type l -delete else mkdir -p "${dir}" fi mkdir -p "${dir}/core" done done ' echo "Cleared Nextcloud appdata JS/CSS assets while preserving js/core and css/core."