# grezzo Tool Bash per installare e garantire la presenza di tooling di sviluppo in modo dichiarativo: tu dici cosa vuoi, grezzo si occupa di farlo comparire, includendo dipendenze e policy opinionated. ## Idee chiave - Dichiarativo “al top”, imperativo “sotto al cofano”: si usano `feat_needed` e gli installer `feat_add_*`. - Include-once: ogni script in `featlib/` si carica una sola volta. - Policy opinionated: priorita' su Mint, Debian, Ubuntu, Arch; poi altri Linux. ## Struttura - `grezzo.sh`: core (helper comuni e `feat_needed`). - `featlib/`: installer per singole feature (es. `pip.sh`, `docker.sh`, `npm.sh`). - `featlib/poetry/`: estensioni Poetry (es. `django.sh`). - Script di esempio nella root (es. `python.sh`, `node_pip_docker_rust.sh`). ## Come si usa Scrivi uno script dichiarativo con le feature che vuoi garantire: ```bash #! /bin/bash -- . "grezzo.sh" . "featlib/npm.sh" . "featlib/pip.sh" . "featlib/docker.sh" . "featlib/rustup.sh" npm-g_feat_needed "node-red" pip_feat_needed "poetry" feat_needed "docker" feat_needed "rustup" ``` Esegui lo script dalla root del repository: ```bash bash my-setup.sh ``` ## Convenzioni - `feat_needed `: se il comando non esiste, invoca `feat_add_`. - `feat_add_`: implementa l’installazione (puo' includere dipendenze imperative). - `*_feat_needed `: wrapper per package manager specifici (pip, npm, poetry). ## Note importanti - Alcuni installer modificano `$HOME/.bashrc.before` e lo includono in `~/.bashrc`. - Molti installer usano `sudo` e possono aggiungere repository ufficiali (es. Docker). - Per coerenza con le policy, si preferiscono i repo ufficiali e gli install script upstream. ## Stato del progetto Il progetto e' in evoluzione. Se vuoi aggiungere una nuova feature, crea un nuovo `featlib/.sh` con `feat_add_` e aggiornalo secondo le policy correnti.