diff --git a/setup.sh b/setup.sh index 06c5b5d..3fc1372 100644 --- a/setup.sh +++ b/setup.sh @@ -255,7 +255,7 @@ EOF" setup_role() { [[ -z "$ROLE" ]] && return - local TEMP_DIR ROLE_SRC ROLE_TARGET INIT_SCRIPT REPO_URL ROLE_URL + local TEMP_DIR ROLE_SRC REPO_URL ROLE_URL service_dir service_name target_dir init_script REPO_URL="https://github.com/deadcxap/init_scripts.git" ROLE_URL="https://api.github.com/repos/deadcxap/init_scripts/contents/$ROLE" log "Checking role $ROLE exists in repository" @@ -283,18 +283,22 @@ setup_role() { run "Cleaning up role repository" rm -rf "$TEMP_DIR" return fi - run "Copying role files" cp -r "$ROLE_SRC" /opt/ - ROLE_TARGET="/opt/$ROLE" - run "Setting ownership for $ROLE_TARGET" chown -R "$USERNAME:$USERNAME" "$ROLE_TARGET" - INIT_SCRIPT="$ROLE_TARGET/init.sh" - if [[ -f "$INIT_SCRIPT" ]]; then - run "Running init.sh for $ROLE" bash "$INIT_SCRIPT" - run "Checking $ROLE stack" bash -c "cd '$ROLE_TARGET' && docker compose ps | grep -q 'Up'" - run "Removing init.sh for $ROLE" rm -f "$INIT_SCRIPT" - else - log "WARN: init.sh not found in $ROLE_TARGET, skipping" - SUMMARY+=("init.sh for $ROLE: MISSING") - fi + run "Copying role files" cp -r "$ROLE_SRC"/. /opt/ + for service_dir in "$ROLE_SRC"/*; do + [ -d "$service_dir" ] || continue + service_name="$(basename "$service_dir")" + target_dir="/opt/$service_name" + run "Setting ownership for $target_dir" chown -R "$USERNAME:$USERNAME" "$target_dir" + init_script="$target_dir/init.sh" + if [[ -f "$init_script" ]]; then + run "Running init.sh for $service_name" bash "$init_script" + run "Checking $service_name stack" bash -c "cd \"$target_dir\" && docker compose ps | grep -q 'Up'" + run "Removing init.sh for $service_name" rm -f "$init_script" + else + log "WARN: init.sh not found in $target_dir, skipping" + SUMMARY+=("init.sh for $service_name: MISSING") + fi + done run "Cleaning up role repository" rm -rf "$TEMP_DIR" }