| #!/bin/bash |
| # |
| # Copyright 2020-2023 The Khronos Group Inc. |
| # |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| # compareImages - compare all asciidoctor images in two branches |
| # Usage: compareImages branch1 branch2 |
| |
| # Where to put temporary files |
| compare=compare |
| |
| branch1=$1 |
| branch2=$2 |
| |
| echo "Preparing test tree under compare/" |
| rm -rf $compare |
| |
| echo "Gathering images under compare/$1 compare/$2" |
| if git checkout $branch1 ; then |
| img1=$compare/$branch1 |
| files1=$compare/$branch1-files |
| mkdir -p $img1 |
| cp images/*.svg $img1 |
| (cd $img1 ; ls) > $files1 |
| else |
| echo "Cannot switch to branch $branch1" |
| rm -rf $compare |
| exit 1 |
| fi |
| |
| if git checkout $branch2 ; then |
| img2=$compare/$branch2 |
| files2=$compare/$branch2-files |
| mkdir -p $img2 |
| cp images/*.svg $img2 |
| (cd $img2 ; ls) > $files2 |
| else |
| echo "Cannot switch to branch $branch2" |
| rm -rf $compare |
| exit 1 |
| fi |
| |
| srcfile=compare/compImages.adoc |
| |
| # Boilerplate header |
| echo "= Image Comparison of Vulkan images in $branch1 $branch2 |
| :data-uri: |
| :icons: font |
| include::../config/attribs.adoc[] |
| " > $srcfile |
| |
| |
| # Files common to both branches |
| echo "== Images Common to Both Branches |
| " >> $srcfile |
| |
| # Identical images |
| identical=() |
| |
| # Where to generate comparison images |
| compdir=$compare/compare |
| mkdir -p $compdir |
| |
| for file in `comm -12 $files1 $files2` ; do |
| echo "Comparing $file" |
| if diff -q $img1/$file $img2/$file > /dev/null ; then |
| identical+=( $file ) |
| # Files are identical |
| else |
| # sum1=`sum $img1/$file | awk '{print $1}'` |
| # sum2=`sum $img2/$file | awk '{print $1}'` |
| # |
| # if test $sum1 -eq $sum2 ; then |
| |
| # Generate comparison image |
| compfile="$compdir/$file" |
| compare $img1/$file $img2/$file $compfile |
| |
| echo "=== $file |
| |
| image::$branch1/$file[title=\"$file in $branch1\",align=\"center\",opts=\"inline\"] |
| |
| image::$branch2/$file[title=\"$file in $branch2\",align=\"center\",opts=\"inline\"] |
| |
| image::compare/$file[title=\"Comparison of branches\",align=\"center\",opts=\"inline\"] |
| |
| <<< |
| |
| " >> $srcfile |
| |
| fi |
| done |
| |
| |
| # Identical files |
| echo "== Identical images |
| " >> $srcfile |
| |
| for file in ${identical[@]} ; do |
| echo " * $file" >> $srcfile |
| done |
| echo >> $srcfile |
| |
| |
| # Files only in first branch |
| echo "== Images only in $branch1 |
| " >> $srcfile |
| |
| for file in `comm -23 $files1 $files2` ; do |
| echo " * $file" >> $srcfile |
| done |
| echo >> $srcfile |
| |
| |
| # Files only in second branch |
| echo "== Images only in $branch2 |
| " >> $srcfile |
| |
| for file in `comm -13 $files1 $files2` ; do |
| echo " * $file" >> $srcfile |
| done |
| echo >> $srcfile |
| |
| outfile=$compare/`basename $srcfile .adoc`.pdf |
| echo "Generating $outfile from $srcfile" |
| asciidoctor -b pdf -r asciidoctor-pdf -o $outfile $srcfile |