106 lines
2.3 KiB
Bash
Executable File
106 lines
2.3 KiB
Bash
Executable File
#!/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 <path> Compose file to use (default: docker-compose.devprod.yml)
|
|
--env-file <path> 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."
|