sdf_appunti/yadm.org

3.7 KiB

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:

  mkdir ~/.local/bin

  curl -fLo ~/.local/bin/yadm \
  https://github.com/TheLocehiliosan/yadm/raw/master/yadm \
  && chmod a+x ~/.local/bin/yadm

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
  # 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

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

  mkdir ~/.local/bin

  curl -fLo ~/.local/bin/yadm \
  https://github.com/TheLocehiliosan/yadm/raw/master/yadm \
  && chmod a+x ~/.local/bin/yadm

A questo punto si clona il repository

  # yadm clone <url/to/remote/repo>
  yadm status

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

  yadm bootstrap

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.