RED='\033[31m' GRE='\033[32m' YEL='\033[33m' BLU='\033[34m' RST='\033[0m' NOGO=0 err() { echo -e "${RED}✖ ${1}${RST}" } die() { err "${1}" NOGO=1 } info() { echo -e "${BLU}${1}${RST}" } ok() { echo -e "${GRE}✔ ${1}${RST}" } warn() { echo -e "${YEL}▲ ${1}${RST}" } # uv command -v uv >/dev/null 2>&1 || die "Comando 'uv' non trovato nel PATH. Installalo con '${YEL}curl -LsSf https://astral.sh/uv/install.sh | sh$RED'." # ruff command -v ruff >/dev/null 2>&1 || die "Comando 'ruff' non trovato nel PATH. Installalo con '${YEL}uv tool install ruff$RED'." # lefthook command -v lefthook >/dev/null 2>&1 || die "Comando 'lefthook' non trovato nel PATH. Installalo con '${YEL}uv tool install lefthook$RED' e poi esegui '${YEL}lefthook install$RED'." ask_yn() { # $1 = domanda (con colori ok) local question="$1" answer while true; do printf '%b\n' "$question" printf '[y/n] --> ' read -r answer # normalizza in minuscolo in modo portabile answer="$(printf %s "$answer" | tr '[:upper:]' '[:lower:]')" case "$answer" in y | yes) return 0 ;; n | no) return 1 ;; *) printf '%b\n' "${RED}RISPOSTA NON VALIDA${RST}" ;; esac done } C_FILE=".scripts/c" if [ ! -f "$C_FILE" ]; then printf '0' >"$C_FILE" fi COUNT="$(cat "$C_FILE")" if [[ ! "$COUNT" =~ ^-?[0-9]+$ ]]; then printf '0' >"$C_FILE" COUNT="$(cat "$C_FILE")" fi PROJECT_DIR="$PWD" EXPECTED_PYTHON="$PROJECT_DIR/.venv/bin/python" ACTUAL_PYTHON="$(command -v python || true)" if [ ! -x "$EXPECTED_PYTHON" ]; then err "❌ ERRORE: virtualenv non trovato nel progetto!" warn "🤖 Provo a crearlo in automatico" uv sync if [ ! -x "$EXPECTED_PYTHON" ]; then die "Ho fallito, segui la guida di installazione in README.md o chiedi a Jonas!" else echo -e "${GRE}✅ virtualenv creato con successo" fi fi if [[ "$NOGO" == 0 ]]; then if [ "$ACTUAL_PYTHON" != "$EXPECTED_PYTHON" ]; then if (("$COUNT" % 5 == 0)) && [[ "$USER" != "else" ]]; then if ask_yn "${YEL}Ti ricordi come attivare il virtual environment?${RST}"; then info "Bene allora questa volta lo dovrai attivare da solo" else info "Allora via a rileggerti la guida README.md" fi else info "Ti attivo il virtual environment così non ti dimentichi di farlo 🐺" . "$PROJECT_DIR/.venv/bin/activate" COUNT=$((COUNT + 1)) printf "$COUNT" >"$C_FILE" fi fi fi