From 7a528f6f4816b726a0453ee3a32837ecd81c3e88 Mon Sep 17 00:00:00 2001 From: Denise Stamatov Date: Tue, 10 Mar 2026 09:49:47 +0100 Subject: [PATCH 1/5] Create 185-plugin-versions-by-instance.sh --- .../185-plugin-versions-by-instance.sh | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100755 scripts/generate-report-parts/185-plugin-versions-by-instance.sh diff --git a/scripts/generate-report-parts/185-plugin-versions-by-instance.sh b/scripts/generate-report-parts/185-plugin-versions-by-instance.sh new file mode 100755 index 0000000..5cbf98f --- /dev/null +++ b/scripts/generate-report-parts/185-plugin-versions-by-instance.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +# +# generates CSV report with plugin versions and instance counts +# + +readonly SQL=" +WITH + _plugin_versions AS ( + SELECT + plugins.plugin.plugin_slug as plugin, + CAST(plugins.plugin."version" AS VARCHAR) as version, + plugins.instance + FROM + plugins + JOIN recent_loops ON plugins.filename = recent_loops.filename + ) +SELECT + plugin, + version, + COUNT(DISTINCT instance) AS instance_count +FROM + _plugin_versions +WHERE + plugin NOT LIKE 'ionos-%' +GROUP BY + plugin, + version +ORDER BY + plugin ASC, + version ASC, + instance_count DESC +" + +readonly CSV_EXPORT_SQL=" +.mode csv +.header on +.output ${REPORT_NAME}/plugin_versions_by_instance.csv +$(echo "$SQL") +" + +readonly REPORT_NAME="${REPORT_NAME:-generate-report}" +readonly CSV_OUTPUT="${REPORT_NAME}/plugin_versions_by_instance.csv" +readonly TITLE="Plugin Versions by Instance Count" + +ionos.loop-duckdb.exec_duckdb "$SQL" '-csv' > "$CSV_OUTPUT" From b604de1034c4535dbb633a83a20f0149b5bae2db Mon Sep 17 00:00:00 2001 From: Denise Stamatov Date: Wed, 11 Mar 2026 11:10:47 +0100 Subject: [PATCH 2/5] Update 185-plugin-versions-by-instance.sh --- .../185-plugin-versions-by-instance.sh | 90 ++++++++++--------- 1 file changed, 50 insertions(+), 40 deletions(-) diff --git a/scripts/generate-report-parts/185-plugin-versions-by-instance.sh b/scripts/generate-report-parts/185-plugin-versions-by-instance.sh index 5cbf98f..cf158c8 100755 --- a/scripts/generate-report-parts/185-plugin-versions-by-instance.sh +++ b/scripts/generate-report-parts/185-plugin-versions-by-instance.sh @@ -1,46 +1,56 @@ #!/usr/bin/env bash -# -# generates CSV report with plugin versions and instance counts -# - -readonly SQL=" -WITH - _plugin_versions AS ( - SELECT - plugins.plugin.plugin_slug as plugin, - CAST(plugins.plugin."version" AS VARCHAR) as version, - plugins.instance - FROM - plugins - JOIN recent_loops ON plugins.filename = recent_loops.filename - ) -SELECT - plugin, - version, - COUNT(DISTINCT instance) AS instance_count -FROM - _plugin_versions -WHERE - plugin NOT LIKE 'ionos-%' -GROUP BY - plugin, - version -ORDER BY - plugin ASC, - version ASC, - instance_count DESC -" +set -euo pipefail -readonly CSV_EXPORT_SQL=" -.mode csv -.header on -.output ${REPORT_NAME}/plugin_versions_by_instance.csv -$(echo "$SQL") -" +REPORT_NAME="${REPORT_NAME:-generate-report}" +CSV_OUTPUT="$REPORT_NAME/plugin_versions_by_instance.csv" +TITLE="Plugin-Versionen nach Instanz (nur aktuellste, ≥500 Instanzen)" -readonly REPORT_NAME="${REPORT_NAME:-generate-report}" -readonly CSV_OUTPUT="${REPORT_NAME}/plugin_versions_by_instance.csv" -readonly TITLE="Plugin Versions by Instance Count" +mkdir -p "$REPORT_NAME" +# SQL für Plugin-Versionen mit Prozent-Spalte +SQL=" +WITH total_instances AS ( + SELECT COUNT(DISTINCT recent_loops.instance) AS total FROM recent_loops +), +numbered_plugins AS ( + SELECT + ROW_NUMBER() OVER ( + ORDER BY COUNT(DISTINCT recent_loops.instance) DESC, plugins.plugin.plugin_slug ASC + ) AS nr, + plugins.plugin.plugin_slug AS plugin, + CAST(plugins.plugin.version AS VARCHAR) AS version, + COUNT(DISTINCT recent_loops.instance) AS instance_count, + ROUND(COUNT(DISTINCT recent_loops.instance) * 100.0 / (SELECT total FROM total_instances), 2) AS percentage + FROM plugins + JOIN recent_loops + ON plugins.filename = recent_loops.filename + WHERE plugins.plugin.plugin_slug NOT LIKE '01-ext-%' + GROUP BY plugin, version + HAVING COUNT(DISTINCT recent_loops.instance) >= 500 +) +SELECT * +FROM numbered_plugins +ORDER BY nr; +" + +# CSV export ionos.loop-duckdb.exec_duckdb "$SQL" '-csv' > "$CSV_OUTPUT" + +# Markdown-Report +cat < Date: Wed, 11 Mar 2026 11:49:07 +0100 Subject: [PATCH 3/5] Update 185-plugin-versions-by-instance.sh --- .../185-plugin-versions-by-instance.sh | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/scripts/generate-report-parts/185-plugin-versions-by-instance.sh b/scripts/generate-report-parts/185-plugin-versions-by-instance.sh index cf158c8..b3e88de 100755 --- a/scripts/generate-report-parts/185-plugin-versions-by-instance.sh +++ b/scripts/generate-report-parts/185-plugin-versions-by-instance.sh @@ -4,11 +4,11 @@ set -euo pipefail REPORT_NAME="${REPORT_NAME:-generate-report}" CSV_OUTPUT="$REPORT_NAME/plugin_versions_by_instance.csv" -TITLE="Plugin-Versionen nach Instanz (nur aktuellste, ≥500 Instanzen)" +TITLE="Plugin Versions by Instance (latest only, ≥500 instances)" mkdir -p "$REPORT_NAME" -# SQL für Plugin-Versionen mit Prozent-Spalte +# SQL for plugin versions with percentage column SQL=" WITH total_instances AS ( SELECT COUNT(DISTINCT recent_loops.instance) AS total FROM recent_loops @@ -37,20 +37,27 @@ ORDER BY nr; # CSV export ionos.loop-duckdb.exec_duckdb "$SQL" '-csv' > "$CSV_OUTPUT" -# Markdown-Report +# Markdown report with pie chart cat < Date: Wed, 18 Mar 2026 10:59:22 +0100 Subject: [PATCH 4/5] Update 185-plugin-versions-by-instance.sh --- .../185-plugin-versions-by-instance.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/scripts/generate-report-parts/185-plugin-versions-by-instance.sh b/scripts/generate-report-parts/185-plugin-versions-by-instance.sh index b3e88de..674f5a8 100755 --- a/scripts/generate-report-parts/185-plugin-versions-by-instance.sh +++ b/scripts/generate-report-parts/185-plugin-versions-by-instance.sh @@ -37,10 +37,17 @@ ORDER BY nr; # CSV export ionos.loop-duckdb.exec_duckdb "$SQL" '-csv' > "$CSV_OUTPUT" +# Get total number of distinct instances +TOTAL_INSTANCES=$(ionos.loop-duckdb.exec_duckdb \ + "SELECT COUNT(DISTINCT instance) FROM recent_loops;" \ + '-noheader') + # Markdown report with pie chart cat < Date: Wed, 18 Mar 2026 16:24:10 +0100 Subject: [PATCH 5/5] Update 185-plugin-versions-by-instance.sh --- .../generate-report-parts/185-plugin-versions-by-instance.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/generate-report-parts/185-plugin-versions-by-instance.sh b/scripts/generate-report-parts/185-plugin-versions-by-instance.sh index 674f5a8..cda4fdc 100755 --- a/scripts/generate-report-parts/185-plugin-versions-by-instance.sh +++ b/scripts/generate-report-parts/185-plugin-versions-by-instance.sh @@ -40,7 +40,7 @@ ionos.loop-duckdb.exec_duckdb "$SQL" '-csv' > "$CSV_OUTPUT" # Get total number of distinct instances TOTAL_INSTANCES=$(ionos.loop-duckdb.exec_duckdb \ "SELECT COUNT(DISTINCT instance) FROM recent_loops;" \ - '-noheader') + '-list') # Markdown report with pie chart cat <