Files
appstore/apps/opencode/latest/scripts/init.sh
T
2026-07-28 00:03:47 +08:00

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"