#!/usr/bin/env bash

set -Eeuo pipefail

NODE=
DRY_RUN=0
while (($#)); do
    case "$1" in
        --node) NODE=${2:-}; shift 2 ;;
        --dry-run) DRY_RUN=1; shift ;;
        *) echo "unknown argument: $1" >&2; exit 2 ;;
    esac
done

[[ "$NODE" == app01 || "$NODE" == app02 ]] || { echo 'node must be app01 or app02' >&2; exit 2; }
paths=(
    /workspace/wwwroot/zhct_sanquan/project/public/static/upload
    /workspace/wwwroot/aizhct_sanquan/project/public/uploads
    /workspace/wwwroot/aizhct_sanquan/project/public/downloads
)

for path in "${paths[@]}"; do
    if [[ ! -e "$path" ]]; then
        printf 'PENDING: release path does not exist yet: %s\n' "$path" >&2
        continue
    fi
    if [[ "$NODE" == app01 ]]; then
        command=(chown -R www:www "$path")
        mode_command=(chmod -R u+rwX,g+rwX,o-rwx "$path")
    else
        command=(chown -R root:www "$path")
        mode_command=(chmod -R a-w,u+rX,g+rX,o-rwx "$path")
    fi
    printf 'RUN: ' >&2
    printf '%q ' "${command[@]}" >&2
    printf '\nRUN: ' >&2
    printf '%q ' "${mode_command[@]}" >&2
    printf '\n' >&2
    if [[ "$DRY_RUN" != 1 ]]; then
        "${command[@]}"
        "${mode_command[@]}"
    fi
done

echo "PASS: $NODE local-file role policy applied to all existing release paths"
