#!/bin/bash # KISS coverage badge updater using line numbers # Usage: scripts/ci-update-coverage-badge.sh [badge_type] # badge_type: "unit" or "bdd", defaults to "unit" set -e COVERAGE=$1 BADGE_TYPE=${2:-"unit"} # Get first line number of the badge LINE_NUM=$(cat -n README.md | grep -i "${BADGE_TYPE} coverage" | head -1 | awk '{print $1}') if [ -z "$LINE_NUM" ]; then echo "Error: Could not find ${BADGE_TYPE} coverage badge in README.md" exit 1 fi # Get color if (( $(echo "$COVERAGE >= 80" | bc -l) )); then COLOR="brightgreen" elif (( $(echo "$COVERAGE >= 50" | bc -l) )); then COLOR="yellow" else COLOR="red" fi # Create badge markdown BADGE_TYPE_UPPER=$(echo "$BADGE_TYPE" | tr '[:lower:]' '[:upper:]') BADGE_MARKDOWN="[![${BADGE_TYPE_UPPER} Coverage](https://img.shields.io/badge/${BADGE_TYPE_UPPER}_Coverage-${COVERAGE}%-${COLOR}?style=flat-square)](https://gitea.arcodange.lab/arcodange/dance-lessons-coach)" # Replace the line using sed if [[ "$(uname)" == "Darwin" ]]; then sed -i '' "${LINE_NUM}s|.*|${BADGE_MARKDOWN}|" README.md else sed -i "${LINE_NUM}s|.*|${BADGE_MARKDOWN}|" README.md fi echo "Updated ${BADGE_TYPE} coverage badge to ${COVERAGE}% (line ${LINE_NUM})"