attivazione venv automatica

This commit is contained in:
senpai 2025-10-15 15:36:53 +02:00
parent 8d7dc747a4
commit 10c680f77a
3 changed files with 102 additions and 3 deletions

1
.gitignore vendored
View file

@ -17,3 +17,4 @@ wheels/
.DS_Store
/.scripts/name
/.scripts/c

98
.on_enter Normal file
View file

@ -0,0 +1,98 @@
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

View file

@ -83,12 +83,12 @@ fi
# isrepo
git rev-parse --is-inside-work-tree >/dev/null 2>&1 || die "Non sembra una repository Git."
# ruff
command -v uv >/dev/null 2>&1 || die "Comando 'uv' non trovato nel PATH. Installalo con 'curl -LsSf https://astral.sh/uv/install.sh | sh'."
# 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'."
ok "uv trovato."
# ruff
command -v ruff >/dev/null 2>&1 || die "Comando 'ruff' non trovato nel PATH. Installalo con 'uv tool add ruff'."
command -v ruff >/dev/null 2>&1 || die "Comando 'ruff' non trovato nel PATH. Installalo con '${YEL}uv tool install ruff$RED'."
ok "ruff trovato."
# git name