Replace bash commands with proper svgo cli

Although this adds another requirement to execute this script, it will prevent OS-specific issues on `sed` and `grep` as described in #1503, and make sure anyone can generate the same SVG output files.

`--pretty` is kept for convenience but can be removed if needed.
pull/1506/head
Simon Marquis 6 months ago committed by GitHub
parent 85129e4660
commit 56b9871fae
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -31,6 +31,14 @@ then
exit 1
fi
# Check if the svgo command is available
if ! command -v svgo &> /dev/null
then
echo "The 'svgo' command is not found. This is required to cleanup and compress SVGs."
echo "Installation instructions available at https://github.com/svg/svgo."
exit 1
fi
# Check for a version of grep which supports Perl regex.
# On MacOS the OS installed grep doesn't support Perl regex so check for the existence of the
# GNU version instead which is prefixed with 'g' to distinguish it from the OS installed version.
@ -114,11 +122,10 @@ echo "$module_paths" | while read -r module_path; do
-Pmodules.graph.of.module="${module_path}" </dev/null
# Convert to SVG using dot, remove unnecessary comments, and reformat
dot -Tsvg "/tmp/${file_name}.gv" |
sed 's/<!--/\x0<!--/g;s/-->/-->\x0/g' | grep -zv '^<!--' | tr -d '\0' |
xmllint --format - \
> "docs/images/graphs/${file_name}.svg"
dot -Tsvg "/tmp/${file_name}.gv" > "docs/images/graphs/${file_name}.svg"
# Compress and cleanup SVG file
svgo --multipass --pretty "docs/images/graphs/${file_name}.svg"
# Remove the temporary .gv file
rm "/tmp/${file_name}.gv"
fi
done
done

Loading…
Cancel
Save