new_blog/fix-graphviz-svg.sh

44 lines
1.1 KiB
Bash
Executable file

# the inline fill/stroke/font-family attributes from the elements it targets.
#
# Requires: xmlstarlet
#
# Usage:
# ./svg_theme.sh input.svg # writes to stdout
# ./svg_theme.sh input.svg output.svg # writes to output.svg
STYLE_TEXT='
@media(prefers-color-scheme: dark){
:root {
--color: white;
}
}
@media(prefers-color-scheme: light){
:root {
--color: black;
}
}
ellipse, path {
fill: none;
stroke: var(--color);
}
polygon {
fill: var(--color);
stroke: var(--color);
}
text {
fill: var(--color);
font-family: sans-serif;
}
'
xmlstarlet ed -O \
-N s="http://www.w3.org/2000/svg" \
--insert "/s:svg/*[1]" --type elem --name style \
--update "/s:svg/style" --value "$STYLE_TEXT" \
--delete "(/s:svg//s:ellipse|/s:svg//s:path|/s:svg//s:polygon)/@fill" \
--delete "(/s:svg//s:ellipse|/s:svg//s:path|/s:svg//s:polygon)/@stroke" \
--delete "/s:svg//s:text/@fill" \
--delete "/s:svg//s:text/@stroke" \
--delete "/s:svg//s:text/@font-family" \
--delete "(/s:svg//s:polygon)[1]"\
"${1:--}" > "${2:-/dev/stdout}"