Second version of installer: asking for sudo upfront

This commit is contained in:
2026-05-04 16:37:35 +02:00
parent 9dfff0bfcd
commit a42d27aca3
+21 -4
View File
@@ -2,6 +2,27 @@
set -euo pipefail set -euo pipefail
### ─────────────────────────────
### Step 0 — Request sudo upfront
### ─────────────────────────────
if ! command -v sudo >/dev/null 2>&1; then
echo "Error: sudo is required."
exit 1
fi
echo "Requesting sudo privileges..."
sudo -v
# Keep sudo alive in the background
( while true; do sudo -n true; sleep 60; done ) &
SUDO_KEEPALIVE_PID=$!
# Ensure cleanup on exit
cleanup() {
kill "$SUDO_KEEPALIVE_PID" >/dev/null 2>&1 || true
}
trap cleanup EXIT
### ───────────────────────────── ### ─────────────────────────────
### Step 1 — Collect system identity ### Step 1 — Collect system identity
### ───────────────────────────── ### ─────────────────────────────
@@ -68,12 +89,10 @@ done
### ───────────────────────────── ### ─────────────────────────────
echo "Replacing file contents..." echo "Replacing file contents..."
# Helper: only text files
is_text() { is_text() {
file --mime "$1" | grep -q text file --mime "$1" | grep -q text
} }
# 5.1 generated/*
if [ -d "$TARGET_DIR/generated" ]; then if [ -d "$TARGET_DIR/generated" ]; then
find "$TARGET_DIR/generated" -type f | while read -r f; do find "$TARGET_DIR/generated" -type f | while read -r f; do
is_text "$f" && sed -i "s/henrov/$USER_NAME/g" "$f" is_text "$f" && sed -i "s/henrov/$USER_NAME/g" "$f"
@@ -82,7 +101,6 @@ fi
README="$TARGET_DIR/README.org" README="$TARGET_DIR/README.org"
# 5.2 + 5.6 (org blocks only)
if [ -f "$README" ]; then if [ -f "$README" ]; then
awk -v user="$USER_NAME" -v host="$HOSTNAME_NAME" ' awk -v user="$USER_NAME" -v host="$HOSTNAME_NAME" '
BEGIN { inblock=0 } BEGIN { inblock=0 }
@@ -97,7 +115,6 @@ if [ -f "$README" ]; then
}' "$README" > "$README.tmp" && mv "$README.tmp" "$README" }' "$README" > "$README.tmp" && mv "$README.tmp" "$README"
fi fi
# 5.3 + 5.4 global replacements
find "$TARGET_DIR" -type f | while read -r f; do find "$TARGET_DIR" -type f | while read -r f; do
if is_text "$f"; then if is_text "$f"; then
sed -i \ sed -i \