diff --git a/.gitignore b/.gitignore index df7ec83..5c01e4e 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ wheels/ .DS_Store /.scripts/name +/.scripts/c diff --git a/.on_enter b/.on_enter new file mode 100644 index 0000000..1b67223 --- /dev/null +++ b/.on_enter @@ -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 diff --git a/.scripts/precheck.sh b/.scripts/precheck.sh index 6fbb2cc..093fd9d 100755 --- a/.scripts/precheck.sh +++ b/.scripts/precheck.sh @@ -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