#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" SRC_PS1="$REPO_ROOT/ps1/ps1.sh" DST_DIR="$HOME/.config/ps1" DST_PS1="$DST_DIR/ps1.sh" SEASON_FILE="$DST_DIR/season" MARKER_START="# >>> user ps1 (managed) >>>" MARKER_END="# <<< user ps1 (managed) <<<" season_mode="dynamic" season_choice="" if [[ -t 0 ]]; then echo "Season mode:" echo " 1) Dynamic (auto by date)" echo " 2) Static (pick one season)" read -r -p "Choose [1]: " season_mode_choice case "${season_mode_choice}" in 2) season_mode="static" echo "Pick a season:" echo " 1) Winter" echo " 2) Spring" echo " 3) Summer" echo " 4) Autumn" read -r -p "Choose [1]: " season_pick case "${season_pick}" in 2) season_choice="spring" ;; 3) season_choice="summer" ;; 4) season_choice="autumn" ;; ""|1) season_choice="winter" ;; *) echo "Invalid choice, using winter."; season_choice="winter" ;; esac ;; ""|1) season_mode="dynamic" ;; *) echo "Invalid choice, using dynamic." season_mode="dynamic" ;; esac fi mkdir -p "$DST_DIR" cp -f "$SRC_PS1" "$DST_PS1" chmod 0644 "$DST_PS1" { printf 'PS1_SEASON_MODE=%s\n' "$season_mode" if [[ "$season_mode" == "static" && -n "$season_choice" ]]; then printf 'PS1_SEASON=%s\n' "$season_choice" fi } > "$SEASON_FILE" chmod 0644 "$SEASON_FILE" add_source_block() { local file="$1" [[ -f "$file" ]] || touch "$file" # remove old block local tmp tmp="$(mktemp)" awk -v s="$MARKER_START" -v e="$MARKER_END" ' $0==s {inside=1; next} $0==e {inside=0; next} !inside {print} ' "$file" > "$tmp" cat "$tmp" > "$file" rm -f "$tmp" cat >> "$file" <