1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
#!/usr/bin/env bash
text=${1:-coverage}
textwidth=$(($(echo -n "$text"|wc -m) * 7 + 6))
numwidth=54
totalwidth=$(($textwidth + $numwidth))
coverage=$(grep -m 1 'headerCovTableEntry[a-zA-Z].*[0-9]*' Libidn2-*-coverage/index.html|sed 's/^.*>\([0-9]\+\.[0-9]\+\).*/\1/');
coverage=$(printf %.2f $coverage)
inum=$(echo $coverage|cut -d'.' -f1)
if [ -z "$inum" ]; then inum="0"; fi
coverage="$coverage%"
# https://www.w3.org/TR/SVG11/types.html#ColorKeywords
if [ $inum -ge 90 ]; then
# color="lawngreen"
color="#4c1"
elif [ $inum -ge 80 ]; then
color="yellow"
elif [ $inum -ge 70 ]; then
color="orange"
else
color="red"
fi
cat <<EOF >badge.svg
<svg xmlns="http://www.w3.org/2000/svg" width="${totalwidth}" height="20">
<linearGradient id="b" x2="0" y2="100%">
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
<stop offset="1" stop-opacity=".1"/>
</linearGradient>
<mask id="a">
<rect width="${totalwidth}" height="20" rx="3" fill="#fff"/>
</mask>
<g mask="url(#a)">
<path fill="#555" d="M0 0h${textwidth}v20H0z"/>
<path fill="${color}" d="M${textwidth} 0h${numwidth}v20H${textwidth}z"/>
<path fill="url(#b)" d="M0 0h${totalwidth}v20H0z"/>
</g>
<g fill="#fff" text-anchor="middle" font-family="Verdana,DejaVu Sans,Geneva,sans-serif" font-size="11">
<text x="$(($textwidth / 2))" y="15" fill="#010101" fill-opacity=".3">${text}</text>
<text x="$(($textwidth / 2))" y="14">${text}</text>
<text x="$(($textwidth + $numwidth / 2))" y="15" fill="#010101" fill-opacity=".3">${coverage}</text>
<text x="$(($textwidth + $numwidth / 2))" y="14">${coverage}</text>
</g>
</svg>
EOF
|