grezzo/README.md

59 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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 linstallazione (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.