diff --git a/README.md b/README.md index b04a5d48..f2eece92 100644 --- a/README.md +++ b/README.md @@ -132,11 +132,7 @@ For general Canton and Daml questions, use the ### Standalone installs -Release asset downloads only (Homebrew formula tarballs and direct GitHub -Release downloads). DPM installs via `dpm install` are counted separately -below. Charts refresh daily via -[`release-stats.yml`](.github/workflows/release-stats.yml). Exact numbers: -[release-downloads.md](https://github.com/bitdynamics-ab/canton-devkit/blob/release-stats-data/docs/assets/release-downloads.md). +Homebrew install, installer script, and GitHub Release direct download: ![Monthly release downloads](https://raw.githubusercontent.com/bitdynamics-ab/canton-devkit/release-stats-data/docs/assets/release-downloads-monthly.svg) @@ -144,10 +140,7 @@ below. Charts refresh daily via ### DPM package downloads -GHCR package pulls for `canton-devkit` (the `dpm install` path). Tracked -separately from standalone release downloads. Charts refresh daily via -[`package-stats.yml`](.github/workflows/package-stats.yml). Exact numbers: -[package-downloads.md](https://github.com/bitdynamics-ab/canton-devkit/blob/release-stats-data/docs/assets/package-downloads.md). +The `dpm install` path: ![Daily DPM package downloads](https://raw.githubusercontent.com/bitdynamics-ab/canton-devkit/release-stats-data/docs/assets/package-downloads-daily.svg) diff --git a/scripts/package-stats.sh b/scripts/package-stats.sh index 6e2b3073..05bf85c4 100755 --- a/scripts/package-stats.sh +++ b/scripts/package-stats.sh @@ -98,13 +98,15 @@ render_line_chart() { local out="$1" title="$2" xlabel="$3" data="$4" local W=760 H=380 - local ml=56 mr=180 mt=48 mb=64 + # Narrow right margin: single-series chart has no legend. + local ml=56 mr=24 mt=48 mb=64 local pw ph pw=$(( W - ml - mr )) ph=$(( H - mt - mb )) - local n maxv step + local n maxv step nseries n="$(printf '%s' "${data}" | jq '.labels | length')" + nseries="$(printf '%s' "${data}" | jq '.series | length')" maxv="$(printf '%s' "${data}" | jq '[.series[].values[]] | max // 0')" maxv="$(nice_max "${maxv}")" step=$(awk -v n="$n" 'BEGIN{ if (n <= 12) print 1; else print int((n + 11) / 12) }') @@ -146,8 +148,8 @@ render_line_chart() { printf '%s\n' \ $(( ml + pw/2 )) $(( H - 12 )) "$(svg_escape "${xlabel}")" - local si=0 sname scolor - while IFS= read -r sname; do + local si=0 scolor + while [ "$si" -lt "$nseries" ]; do scolor="$(printf '%s' "${data}" | jq -r --argjson i "$si" '.series[$i].color')" local pts="" local vi=0 v px py @@ -167,14 +169,8 @@ render_line_chart() { printf '\n' "${p%,*}" "${p#*,}" "${scolor}" done - local ly=$(( mt + si*22 )) - printf '\n' \ - $(( ml + pw + 16 )) "$ly" "${scolor}" - printf '%s\n' \ - $(( ml + pw + 36 )) $(( ly + 12 )) "$(svg_escape "${sname}")" - si=$(( si + 1 )) - done < <(printf '%s' "${data}" | jq -r '.series[].name') + done printf '\n' } > "${out}" diff --git a/scripts/package-stats_test.sh b/scripts/package-stats_test.sh index bdbf1a8a..c0c9491b 100755 --- a/scripts/package-stats_test.sh +++ b/scripts/package-stats_test.sh @@ -91,6 +91,14 @@ assert_eq "first seeded row" \ assert_file_contains "md total" "${md}" "**Total downloads:** 100" assert_file_contains "md day" "${md}" "| 2026-10-20 | 20 |" assert_file_contains "svg title" "${svg}" "Daily DPM package downloads" +if grep -Fq 'width="14" height="14"' "${svg}"; then + echo "FAIL: svg still contains a legend swatch" >&2 + exit 1 +fi +if grep -Fq '>Downloads' "${svg}"; then + echo "FAIL: svg still contains a Downloads legend label" >&2 + exit 1 +fi # Idempotent same-day re-run must not duplicate rows. OUT_DIR="${out}" \