mirror of
https://github.com/okxlin/appstore.git
synced 2026-09-22 16:00:58 +00:00
38 lines
1.0 KiB
Bash
38 lines
1.0 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
ENV_FILE="${ENV_FILE:-$ROOT_DIR/.env}"
|
|
|
|
read_env_value() {
|
|
local value=""
|
|
[[ -f "$ENV_FILE" ]] || return 0
|
|
value="$(sed -n "s/^APP_DATA_DIR=//p" "$ENV_FILE" | tail -n 1)"
|
|
value="${value#\"}"
|
|
value="${value%\"}"
|
|
value="${value#\'}"
|
|
value="${value%\'}"
|
|
printf '%s\n' "$value"
|
|
}
|
|
|
|
data_dir_value="${APP_DATA_DIR:-$(read_env_value)}"
|
|
data_dir_value="${data_dir_value:-./data}"
|
|
data_dir_is_absolute=false
|
|
case "$data_dir_value" in
|
|
/) echo "refusing to use / as APP_DATA_DIR" >&2; exit 1 ;;
|
|
/*) data_dir="$data_dir_value"; data_dir_is_absolute=true ;;
|
|
*) data_dir="$ROOT_DIR/${data_dir_value#./}" ;;
|
|
esac
|
|
|
|
data_dir="$(readlink -f -- "$data_dir")"
|
|
case "$data_dir" in
|
|
/) echo "refusing to use / as APP_DATA_DIR" >&2; exit 1 ;;
|
|
esac
|
|
if [[ "$data_dir_is_absolute" == false && "$data_dir" != "$ROOT_DIR/"* ]]; then
|
|
echo "refusing relative APP_DATA_DIR outside the app directory" >&2
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p -- "$data_dir"
|
|
chown -R 1000:1000 -- "$data_dir"
|