98 lines
2.5 KiB
Text
98 lines
2.5 KiB
Text
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
|