sdf_appunti/yadm.org

117 lines
3.7 KiB
Org Mode
Raw Permalink Normal View History

2021-06-27 17:28:31 +00:00
* yadm
Scritto in Python. Non funziona su Windows, ma non ha dipendenze aggiuntive su Linux.
Consente la gestione dei dotfiles in un repository con l'aggiunta dei template e anche dei dati
crittografati (come anche chezmoi).
* Installazione
E' possibile installare il programma in vari modi (elencati nella documentazione). Un modo che
consente l'installazione senza necessità di particolari diritti e' quello di scaricare il
programma direttamente dal repository github:
#+begin_example
mkdir ~/.local/bin
curl -fLo ~/.local/bin/yadm \
https://github.com/TheLocehiliosan/yadm/raw/master/yadm \
&& chmod a+x ~/.local/bin/yadm
#+end_example
Yadm funziona come un wrapper attorno a Git con l'aggiunta di alcune particolarità specifiche per
la gestione dei dotfiles.
* Partendo da zero
Partendo da zero la procedura prevede
- La creazione del repository dove yadm gestirà i dotfiles
- La sua configurazione (ricordarsi di impostare user.name e user.email)
- La configurazione del link al repository remoto
- L'aggiunta dei dotfiles al repository
- Il commit
- Il push
#+begin_example
# Inizializzo il repository
# (ricordarsi di aggiungere poi a mano user.name e user.email)
# il repository viene creato in ~/.local/share/yadm/repo.git
yadm init
# Aggiungere il server remoto
# yadm remote add origin <url/to/remote/repo>
# Aggiungo vim
yadm add .vimrc
yadm add .vim
yadm commit -m "Aggiunto vim"
yadm push -u origin master
#+end_example
Si possono aggiungere files o directory come se si stesse lavorando con Git
* Partendo con un nuova installazione, ma con repository remoto già pronto
Partendo da una home "vuota" ed avendo a disposizione un repository già configurato
si procede con l'installazione del programma
#+begin_example
mkdir ~/.local/bin
curl -fLo ~/.local/bin/yadm \
https://github.com/TheLocehiliosan/yadm/raw/master/yadm \
&& chmod a+x ~/.local/bin/yadm
#+end_example
A questo punto si clona il repository
#+begin_example
# yadm clone <url/to/remote/repo>
yadm status
#+end_example
Il comando ~clone~ cerca di fare il checkout di tutti i files presenti nel reposiotry.
*Se un file esiste già localmente e il suo contenuto differisce da quello nel repository*
*il file locale sarà lasciato invariato e occorrerà verificare e risolvere le differenze*.
* Funzionalità particolari
Yadm offre alcune funzionalità particolari
* Bootstrap
E' possibile posizionare uno script di nome ~bootstrap~ (deve chiamarsi così) in
~$HOME/.config/yadm~.
2021-06-28 13:22:32 +00:00
Questo file, che deve essere posizionato manualmente e deve essere eseguibile,
2021-06-27 17:28:31 +00:00
sarà richiamato ed eseguito con il comando
#+begin_example
yadm bootstrap
#+end_example
* Alternate files
E' possibile usare files diversi per situazioni diverse. La gestione avviene appendendo un suffisso
al nome del file da aggiungere al repository (vedi documentazione).
* Templates
Il concetto è simile agli alternate files. I template contengono dati specifici per un host che
saranno gestiti in input da un template processor per produrre in output il file elaborato.
* Encryption
2021-06-28 13:22:32 +00:00
Se vi fidate, consente la memorizzazione nel repository di informazioni crittografate. L'esempio tipico
2021-06-27 17:28:31 +00:00
è quello relativo alla gestione delle chiavi SSH.
* Hooks
2021-06-28 13:22:32 +00:00
Per ogni comando di yadm è possibile fornire degli script da eseguire prima e/o dopo l'esecuzione del
2021-06-27 17:28:31 +00:00
comando stesso.
Gli hook sono gestiti con attenzione al risultato dell'esecuzione dello script. Se, ad esempio,
uno script di "pre_commit" viene eseguito ritornando un valore diverso da zero, allora il comando
commit non viene eseguito e il processo si ferma.