Peut-être, mais pour le moment je vois plutôt de la magie noire, vu que c'est illisible (surtout, ne pas mettre de commentaires sur ce que fait le sed...)
Le programme est construit en utilisant le pattern query/joblist/process qui est a peu pres la seule un peu exotique qu'il faut comprendre quand on fait du shell. Je vais donc detailler un peu.
Le shell est fort pour lancer des processus et aigiuiller les donnees entre differents processus. C'est donc sous la forme de donnees transitant entre des processus --- ou meme de fichiers --- qu'il faut representer toutes les donnees complexes.
backup_query genere la liste des sujets du script, les git repositories qui vont etre archives. Cela produit une liste
backup_process traite la joblist precedemment cree.
Le point clef est le point 2, que beaucoup de programmeurs traitent maladroitement en essayant de representer la joblist dans des variables du shell --- peche mortel!
En plus c'est tres facile a developper et deboguer car on peut facilement isoler un element du pipe pour l'ausculter, faire du mocking (avec cat)...
C'est tres facile a faire evoluer, par exemple s'il faut adapter la methode de backup au sujet, on peut ajouter une colonne verbe dans la joblist, qui precise la methode a utiliser et faire le dispatch dans backup_process.
[^] # Re: Formation
Posté par Michaël (site web personnel) . En réponse à la dépêche systemd pour les administrateurs, partie 1 et 2. Évalué à 3. Dernière modification le 06 août 2014 à 11:42.
Le programme est construit en utilisant le pattern
query/joblist/processqui est a peu pres la seule un peu exotique qu'il faut comprendre quand on fait du shell. Je vais donc detailler un peu.Le shell est fort pour lancer des processus et aigiuiller les donnees entre differents processus. C'est donc sous la forme de donnees transitant entre des processus --- ou meme de fichiers --- qu'il faut representer toutes les donnees complexes.
Le point clef est le point 2, que beaucoup de programmeurs traitent maladroitement en essayant de representer la joblist dans des variables du shell --- peche mortel!
En plus c'est tres facile a developper et deboguer car on peut facilement isoler un element du pipe pour l'ausculter, faire du mocking (avec
cat)...C'est tres facile a faire evoluer, par exemple s'il faut adapter la methode de backup au sujet, on peut ajouter une colonne verbe dans la joblist, qui precise la methode a utiliser et faire le dispatch dans backup_process.