[HS] script bash pour attacher les sources aux pdfs

Bonsoir amis lilypondiens,

Grace à une remarque de Valentin lors du premier lily café virtuel j'attache maintenant mes sources (partition.ly et fichiers inclus) sous forme de pièces jointes au pdfs générés, Par contre je n'envisageais pas de reprendre les centaines de partitions antérieures, sauf éventuellement via un petit script bash. Le temps grincheux de ce dimanche m'a convaincu de me mettre au boulot et voici le résultat, si ça peux servir...

Bonnes fêtes et portez vous bien

dépendances : ghostscript et pdftk

#!/bin/bash
oldIFS=$IFS # sauvegarde du séparateur de champ
IFS=$'\n' # nouveau séparateur de champ, le caractère fin de ligne

myMusicRep=/home/vincent/Nextcloud/Musique/MyRealBook ### ma musique est là !
include="/home/vincent/Nextcloud/Musique/Lilypond/Inclusions/"

#décommenter la ligne suivante pour sauvegarder les fichier modifiés
#backup="Oui"

indexage des fichiers sources

cd $myMusicRep
find -iname "*.ly" | sort > /tmp/mrb.lst ### liste tous les fichiers sources dans un fichier temporaire

for line in $(</tmp/mrb.lst) ### pour chaque fichier.ly
do

liste des fichiers pdf généré

racine=$(echo ${line%.ly})
echo $line
pdftab=($(grep "define output-suffix" $line)) ### j'utilise systématiquement les books
for suffix in ${pdftab[*]}
do
pdf=$racine"-"$(echo $suffix | cut -d """ -f2)".pdf"
if [ ! -f $pdf ]; then
echo $pdf >> \tmp\mrbPdfNonTrouvés
fi
embededlist=$(pdfdetach -list $pdf) ### liste des pièces jointes déjà présentes
embednumber=$(echo ${embededlist:0:1}) ### nobre de pièces jointes
if [ $embednumber != 5 ]; then ### s'il y a 5 pieces jointes, c'est desrécentes, rien à faire. Sinon traitement
gs -dBATCH -DNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=out.pdf $pdf ### nettoyage et création d'un fichier temporaire
if [ ! -z $backup ]; then cp $pdf $pdf".sos"; fi ### sauvegarde éventuelle du pdf originel

attachement des piècesjointes

pdftk out.pdf attach_files $line $include"AdditionalFunctions.ly" $include"jazzchords.ily" $include"VariablesJazz.ly" $include"lilyjazz.ily" output $pdf
fi
done
done

···
-- 
Vincent Gay
Envoyé depuis mon saxo-phone :)
[http://blog.vintherine.org/](http://blog.vintherine.org/) - [http://photos.vintherine.org/](http://photos.vintherine.org/)