Seguro que se puede hacer mejor, pero bueno me ha funcionado.
No sabia que PlantUML ahora han metido un themes. Y para probarlos he tirado 4 lineas en bash y parece que ha salido.
Me he creado este fichero en /tmp/caca.puml :
@startuml !theme spacelab skinparam backgroundColor #7f7f7f Pepito <- DonJose : Hola Don Pepito Pepito -> DonJose : Hola Don Jose Pepito <- DonJose : ¿Paso ayer por mi casa? Pepito -> DonJose : Por su casa yo pasé @enduml
Esta puesto adrede después de !theme spacelab el skinparam para poner en gris el fondo para machacar la configuración del theme.
Y después creo un directorio /tmp/resultados/ .
Y finalmente otro fichero donde saco los themes disponibles en plantuml /tmp/list_themes.puml :
@startuml help themes @enduml
Y convierto ese help a un txt (que es en plan asciiart):
java -jar plantuml.jar /tmp/list_themes.puml -ttxt
Y el churro en una linea:
line=$(cat /tmp/list_themes.atxt | tr -d " " | grep -Ev "^$" | grep "Thepossiblethemesare:" -n | cut -d: -f1); for theme in $(cat /tmp/list_themes.atxt | tr -d " " | grep -Ev "^$" | tail +$(( $line + 1 ))); do echo "$theme"; cat /tmp/caca.puml | sed -e "s/spacelab/$theme/" | java -jar plantuml.jar -pipe -tpng > /tmp/resultados/caca.$theme.png ; done
Y la explicación:
- $line se saca de hacerle un cat al fichero de la lista de themes como asciiart, quitarle todos los espacios en blanco (porque por suerte todos los themes son sin espacios en blanco), con grep inverso ( -v) y regex (con -E) quito las lineas en blanco. Y de esto lo pipeo para sacar el número linea de donde empieza los themes buscando la frase apiñada (sin espacios en blanco) «Thepossiblethemesare» y le saco el campo con cut.
- Después tiro un bucle for del cual chupo de (suerte otra vez que no tiene espacios en blanco porque si no tendría que tirar de IFS) casi completa la anterior churro para sacar $line, salvo el grep final que lo cambio por un tail para sacar a partir de la linea N.
- Y en cada iteración tengo el $theme que le hago una sustitución en vivo al fichero de template de hola don pepito y voy creando fichero a fichero de cada theme finalizando el nombre con .theme.png .
Y subo un puñado de ficheros generados: