sp-hydra-veil-core/lib/steps/repos.sh

145 lines
No EOL
4.1 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
step_repos() {
print_section "Repositories"
log_step "Cloning repositories & configuring .env" 2 $TOTAL_STEPS
mkdir -p "$HV_BASE"
chmod 700 "$HV_BASE"
_clone_repos
_setup_env
}
_clone_repos() {
echo ""
log_info "REPOS CONFIG:"
for name in core essentials cli gui; do
local url="${REPO_URLS[$name]}"
local branch="${REPO_BRANCHES[$name]}"
local dest="${REPO_DIRS[$name]}"
echo " $name:"
echo " URL: $url"
echo " Branch: $branch"
echo " Dest: $dest"
done
echo ""
for name in core essentials cli gui; do
local url="${REPO_URLS[$name]}"
local branch="${REPO_BRANCHES[$name]}"
local dest="${REPO_DIRS[$name]}"
log_info "Processing ${name}..."
log_info " Checking if exists: $dest/.git"
if [ -d "$dest/.git" ]; then
log_warn "Repository already exists: ${dest}"
if ask_confirm "Delete and re-clone ${name}?"; then
log_info "Deleting: $dest"
rm -rf "$dest"
else
log_skip "Re-clone skipped — using ${dest}"
continue
fi
fi
log_info "Starting clone..."
log_info " git clone --branch $branch $url $dest"
start_spinner "Cloning ${name} (branch: ${branch})..."
local clone_log="/tmp/clone_${name}_$$.log"
if ! git clone --branch "$branch" "$url" "$dest" > "$clone_log" 2>&1; then
stop_spinner
log_error "git clone FAILED for ${name}"
log_error "URL: $url"
log_error "Branch: $branch"
log_error "Dest: $dest"
log_error "Output:"
cat "$clone_log" | sed 's/^/ /'
rm -f "$clone_log"
exit 1
fi
rm -f "$clone_log"
log_info "Checking if clone succeeded: ls -la $dest/.git"
if [ ! -d "$dest/.git" ]; then
stop_spinner
log_error "${name} clone directory exists but no .git found"
ls -la "$dest" 2>&1 | sed 's/^/ /'
exit 1
fi
stop_spinner "${name} cloned → ${dest}"
chmod 700 "$dest"
log_ok "${name} OK"
done
echo ""
log_info "FINAL CHECK:"
for name in core essentials cli gui; do
local dest="${REPO_DIRS[$name]}"
if [ -d "$dest/.git" ]; then
log_ok "$name: ✓ cloned at $dest"
else
log_error "$name: ✗ NOT cloned — $dest/.git missing"
fi
done
echo ""
if [ ! -d "$HV_CORE/.git" ]; then
log_error "core repository not cloned"
exit 1
fi
}
_setup_env() {
local env_file="$HV_CORE/.env"
local example_file="$HV_CORE/.env.example"
if [ ! -f "$example_file" ]; then
log_error ".env.example not found: ${example_file}"
exit 1
fi
if [ -f "$env_file" ]; then
log_warn ".env already exists — overwriting"
fi
echo ""
printf " ${DIM}Fill in the variables. ENTER = leave empty.${RESET}\n"
print_divider
echo ""
select_option \
"APP_ENV — application environment" \
"local development / testing" \
"production production / real domain"
case "$SELECT_RESULT" in
0) _app_env="local" ;;
1) _app_env="production" ;;
*) _app_env="production" ;;
esac
echo ""
printf " ${BCYAN}┌─${RESET} ${BWHITE}SP_API_BASE_URL_PRODUCTION${RESET} ${DIM}e.g. https://fake.simplifiedprivacy.org/api/v1${RESET}\n"
printf " ${BCYAN}${RESET} "
read -r _api_url < /dev/tty
cat > "$env_file" << EOF
APP_ENV=${_app_env}
SP_API_BASE_URL_LOCAL=http://simplifiedprivacy.test/api/v1
SP_API_BASE_URL_PRODUCTION=${_api_url}
HV_CORE_HOME=${HV_CORE}
INSTALL_DIR=${HOME}
CORE_DIR=${HV_CORE}
EOF
chmod 600 "$env_file"
log_ok "APP_ENV=${_app_env}"
[ -n "$_api_url" ] && log_ok "SP_API_BASE_URL_PRODUCTION=${_api_url}" || label_skip "SP_API_BASE_URL_PRODUCTION — empty"
log_ok "INSTALL_DIR=${HOME}"
log_ok ".env written → ${env_file}"
}