Serata dotfiles: demo frankenscript
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

3.2 KiB

Il frankenscript

E' il risultato di scopiazzamenti vari messi insieme con lo scotch e la colla di pesce.

Purtroppo è passato un bel po' di tempo e non ricordo da dove ho preso il codice. Agli autori dimenticati vanno tutti i miei ringraziamenti.

Il "tool" (se così si può chiamare) è in realtà composto da due branche: una per Linux e l'altra per Windows. Il funzionamento delle due branche è essenzialmente uguale e segue la stessa struttura:

runme_*

E' lo script di "bootstrap". Ha il compito di impostare l'ambiente e richiamare lo script di gestione dei link simbolici.

install.*

E' lo script che esegue il lavoro vero e proprio di gestione dei link simbolici e dell'unico vezzo relativo alla configurazione di Git.

Il file da eseguire è quindi "runme_linux.sh" in ambiente Linux o "runme_win.cmd" in ambiente Windows.

Per Windows occorre avere i diritti di creazione dei link simbolici o eseguire lo script con "esegui come administratore".

L'organizzazione dei dotfiles

La gestione è un po' datata e prende in considerazione come destinazione soltanto la $HOME.

I dotfiles sono gestiti in "gruppi" ciascuno identificato da una directory, dare un nome descrittivo alla directory è utile, ma non è necessario. Non c'è nessun legame tra il nome della directory ed il suo contenuto. Queste le directory ustate:

  • common: elementi "comuni" o non necessrariamente abbinati ad un software.

  • emacs: elementi di configurazione dei dotfiles relativi a GNU Emacs

  • git: elementi di configurazione dei dotfiles relativi a Git

  • vim: elementi di configurazione dei dotfiles relativi a Vim

All'interno di ciascuna directory gli elementi vengono gestiti in base alla tipolgia (estensione) dei files.

*.windows-registry

Deve essere gestito come elemento del registro di configurazione di Windows. Il contenuto è stato creato con un export che viene quindi importato.

*.symlink

Senza la "S" finale!

E' il file a cui si vuole agganciare il link simbolico. Il nome del link simbolico sarà lo stesso del file.

Se ad esempio ho il file .gitconfig.symlink, dopo l'esecuzione dello script mi ritroverò nella $HOME o nella %USERPROFILE% .gitconfig come link simbolico.

*.symlinks

Notare la "S" finale!

Contiene la lista delle destinazioni dei link simbolici. Necessaria quando i nomi delle destinazioni sono diverse tra Linux e Windows (unici elementi gestiti).

Facciamo un esempio.

Se ho un file (ma non c'è differenza se dovessi avere una directory) di nome .pippo.conf ed ho la necessità di creare un link simbolico che si chiama _pippo.conf per Windows mentre quello per Linux resta invariato continuado a chiamarsi .pippo.conf devo agire così:

  • avere il file reale che si chiame .pippo.conf

  • creare un file di testo che si chiama .pippo.conf.symlinks (ricordarsi della S finale) e il cui contenuto deve essere di due righe:

    • linux: .pippo.conf

    • windows: _pippo.conf

Eseguendo lo script in Linux mi troverò nella $HOME .pippo.conf (link simbolico che punta al file fisico nel repository dei dotfiles).

Eseguendo lo script in Windows mi ritroverò nella %USERPROFILE% _pippo.conf (sempre link simbolico).