117 lines
3.7 KiB
Org Mode
117 lines
3.7 KiB
Org Mode
* 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~.
|
|
|
|
Questo file, che deve essere posizionato manualmente e deve essere eseguibile,
|
|
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
|
|
|
|
Se vi fidate, consente la memorizzazione nel repository di informazioni crittografate. L'esempio tipico
|
|
è quello relativo alla gestione delle chiavi SSH.
|
|
|
|
* Hooks
|
|
|
|
Per ogni comando di yadm è possibile fornire degli script da eseguire prima e/o dopo l'esecuzione del
|
|
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.
|
|
|