From 8127d21ffcada5460dbb932d80015d28c4fd64f3 Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Mon, 15 Jun 2026 18:45:37 +0100 Subject: [PATCH] tools: add script to print blurb for SPI yearly report Co-developed-by: Claude Opus 4.8 --- tools/spi-report.sh | 53 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100755 tools/spi-report.sh diff --git a/tools/spi-report.sh b/tools/spi-report.sh new file mode 100755 index 0000000000..6cdbf8e88d --- /dev/null +++ b/tools/spi-report.sh @@ -0,0 +1,53 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: LGPL-2.1-or-later +# +# Generate the SPI annual report blurb. +# +# Usage: tools/spi-report.sh [YEAR] +# +# YEAR defaults to the previous calendar year. + +set -euo pipefail + +year="${1:-$(($(date +%Y) - 1))}" +prev_year=$((year - 1)) + +range_start="${year}-01-01T00:00:00" +range_end="$((year + 1))-01-01T00:00:00" +prev_range_start="${prev_year}-01-01T00:00:00" +prev_range_end="${year}-01-01T00:00:00" + +tags="$(git for-each-ref --format='%(creatordate:format:%Y) %(refname:short)' 'refs/tags/v[0-9]*')" + +major_releases="$(grep -cE "^${year} v[0-9]+\$" <<<"$tags" || true)" +point_releases="$(grep -cE "^${year} v[0-9]+\.[0-9]+\$" <<<"$tags" || true)" + +commits="$(git rev-list --count --no-merges --since="$range_start" --until="$range_end" HEAD)" +prev_commits="$(git rev-list --count --no-merges --since="$prev_range_start" --until="$prev_range_end" HEAD)" + +contributors="$(git shortlog -s --group=author --group=trailer:Co-authored-by \ + --since="$range_start" --until="$range_end" HEAD | + sed -e '/Weblate/ d' -e '/dependabot\[bot\]/ d' | wc -l)" + +if [ "$commits" -ge "$prev_commits" ]; then + trend="up from" +else + trend="down from" +fi + +cat <) +and we participated in All Systems Go! +(https://cfp.all-systems-go.io/all-systems-go-${year}/schedule/) in Berlin. + +We continue to hold a biweekly maintainers meeting and the project is +maintaining a steady pace of development. +EOF