59 lines
1.8 KiB
Markdown
59 lines
1.8 KiB
Markdown
# 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 <cmd>`: se il comando non esiste, invoca `feat_add_<cmd>`.
|
||
- `feat_add_<cmd>`: implementa l’installazione (puo' includere dipendenze imperative).
|
||
- `*_feat_needed <pkg>`: 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/<nome>.sh` con `feat_add_<nome>` e aggiornalo secondo le policy correnti.
|