Subject: [HS] script bash pour attacher les sources aux pdfs

From: Vincent Gay <[email-masked]>
Date: Sun, 20 Dec 2020 18:46:47 +0100

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://photos.vintherine.org/