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