mirror of
https://github.com/alexbelgium/hassio-addons.git
synced 2026-09-07 18:29:10 +02:00
Every push to master has failed to build since 2026-08-19 05:15. The
prebuild-sanitize job dies before running a single step:
EndBug/add-and-commit/v11/action.yml (Line: 25, Col: 18):
Unrecognized named-value: 'github'. Located at position 1 within
expression: github.workspace
Failed to load EndBug/add-and-commit/v11/action.yml
Upstream's v11.1.0, published 2026-08-18 22:44 UTC, put a literal
"${{ github.workspace }}" inside the description of the `cwd` input. Action
metadata descriptions are still parsed as expressions and the `github` context
does not exist there, so the action no longer loads at all. The floating v11
tag was moved to it, which is why nothing changed in this repo and every
workflow using the action broke at once - the builder, the README and stats
refreshers, the CRLF sweep, the image compressor and the issue labeller.
v11.0.0 does not contain that line and loads normally, so pinning to it keeps
the version Dependabot moved us to in #2985 while stepping off the tag. It also
took out an unrelated add-on fix: the builder's revert-on-failure job reverted
the seerr merge (#2993) as collateral, and that is being reapplied separately.
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
244 lines
8.1 KiB
YAML
244 lines
8.1 KiB
YAML
# yamllint disable rule:line-length
|
|
---
|
|
name: Generate weekly graphs
|
|
on:
|
|
workflow_call:
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
stats_graphs:
|
|
if: github.repository_owner == 'alexbelgium'
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout Repo
|
|
uses: actions/checkout@v7.0.1
|
|
- name: Install apps
|
|
run: |
|
|
git pull --rebase origin master
|
|
sudo apt-get update
|
|
sudo apt-get install gnuplot -y || true
|
|
- name: Create addons stats
|
|
run: |
|
|
# Prepare data
|
|
cp Stats Stats3
|
|
# Remove Totals
|
|
sed -i "2d" Stats3
|
|
# Inverse file
|
|
gawk -i inplace '{for(i=NF;i>1;i--)printf "%s ",$i;printf "%s",$1;print ""}' Stats3
|
|
# Only top 10
|
|
head -n 11 Stats3 > tmp_file && mv tmp_file Stats3
|
|
# Transpose data
|
|
awk '
|
|
{
|
|
for (i=1; i<=NF; i++) {
|
|
a[NR,i] = $i
|
|
}
|
|
}
|
|
NF>p { p = NF }
|
|
END {
|
|
for(j=1; j<=p; j++) {
|
|
str=a[1,j]
|
|
for(i=2; i<=NR; i++){
|
|
str=str" "a[i,j];
|
|
}
|
|
print str
|
|
}
|
|
}' Stats3 > StatsTmp && mv StatsTmp .github/Stats3
|
|
cd .github || true
|
|
# Add download count to names
|
|
#build_list="$(head -n 1 Stats3)"
|
|
# shellcheck disable=SC2206
|
|
#build_list=($build_list)
|
|
# shellcheck disable=SC2013
|
|
#for var in "${build_list[@]:1}"; do
|
|
#i=0
|
|
#j=0
|
|
#k=0
|
|
# shellcheck disable=SC2013
|
|
# for i in $(sed -n "/${var}/p" Stats); do
|
|
# k="$((k+1))"
|
|
# if [ "$k" -eq 3 ]; then break; fi
|
|
# if [ "$i" -eq "$i" ] && [ "$i" -gt "$j" ]; then j="$i"; fi
|
|
# done
|
|
#sed -i "s|${var}|${var}_(${j}x)|g" Stats3
|
|
#done
|
|
echo "... done"
|
|
# Remove series with less than 4 points
|
|
sed -i "/^[0-9|-]* [0-9*|-]* [0-9*|-]* -/d" Stats3
|
|
# Plot graph
|
|
( gnuplot -persist <<-EOFMarker
|
|
set title 'Top 10 addons'
|
|
set ylabel 'Number of installations'
|
|
set xdata time
|
|
set datafile missing "-"
|
|
set timefmt "%Y-%m-%d"
|
|
set format x "%y-%m-%d"
|
|
set datafile sep ' '
|
|
set autoscale
|
|
set terminal png size 500,300
|
|
set output 'stats_addons.png'
|
|
set term png tiny
|
|
plot for [i=2:*] 'Stats3' using 1:i w l title columnhead(i) smooth bezier
|
|
EOFMarker
|
|
) || ( gnuplot -persist <<-EOFMarker
|
|
set title 'Top 10 addons'
|
|
set ylabel 'Number of installations'
|
|
set xdata time
|
|
set datafile missing "-"
|
|
set timefmt "%Y-%m-%d"
|
|
set format x "%y-%m-%d"
|
|
set datafile sep ' '
|
|
set autoscale
|
|
set terminal png size 500,300
|
|
set output 'stats_addons.png'
|
|
set term png tiny
|
|
plot for [i=2:*] 'Stats3' using 1:i w l title columnhead(i)
|
|
EOFMarker
|
|
)
|
|
#plot for [i=1:*] 'Stats3' using 0:i
|
|
rm Stats3
|
|
cd .. || true
|
|
|
|
- name: Create individual stats
|
|
run: |
|
|
# Prepare data
|
|
cp Stats Stats3
|
|
# Remove Totals
|
|
sed -i "2d" Stats3
|
|
# Inverse file
|
|
gawk -i inplace '{for(i=NF;i>1;i--)printf "%s ",$i;printf "%s",$1;print ""}' Stats3
|
|
# For each addon
|
|
# shellcheck disable=SC2013
|
|
for line in $(awk '{ print $1 }' Stats3); do
|
|
TITLE="${line%% *}"
|
|
FOLDER="$(grep -irl "ghcr.io/alexbelgium/$TITLE-{arch}" --include="config.*" . | xargs -r dirname)"
|
|
FOLDER="${FOLDER:2}"
|
|
echo "$TITLE found in $FOLDER"
|
|
# If non null
|
|
if [[ "${#FOLDER}" -gt 2 ]]; then
|
|
sed -n "/Date /p" Stats3 > "$FOLDER"/StatsTmp
|
|
sed -n "/$TITLE /p" Stats3 >> "$FOLDER"/StatsTmp
|
|
# Go in folder
|
|
cd "$FOLDER" || true
|
|
cat StatsTmp
|
|
# Transpose data
|
|
awk '
|
|
{
|
|
for (i=1; i<=NF; i++) {
|
|
a[NR,i] = $i
|
|
}
|
|
}
|
|
NF>p { p = NF }
|
|
END {
|
|
for(j=1; j<=p; j++) {
|
|
str=a[1,j]
|
|
for(i=2; i<=NR; i++){
|
|
str=str" "a[i,j];
|
|
}
|
|
print str
|
|
}
|
|
}' StatsTmp > StatsTmp2 && mv StatsTmp2 StatsTmp
|
|
#Normalize data
|
|
#awk 'FNR==NR{max=($2+0>max)?$2:max;next} {print $1,$2/max}' StatsTmp StatsTmp
|
|
# Plot graph
|
|
( gnuplot -persist <<-EOFMarker
|
|
set title "$TITLE"
|
|
set ylabel 'Number of installations'
|
|
set xdata time
|
|
set datafile missing "-"
|
|
set timefmt "%Y-%m-%d"
|
|
set format x "%y-%m-%d"
|
|
set datafile sep ' '
|
|
set autoscale
|
|
set terminal png size 500,150
|
|
set output "stats.png"
|
|
set term png tiny
|
|
plot for [i=2:*] 'StatsTmp' using 1:i w l title columnhead(i) smooth bezier
|
|
EOFMarker
|
|
) || ( gnuplot -persist <<-EOFMarker
|
|
set title "$TITLE"
|
|
set ylabel 'Number of installations'
|
|
set xdata time
|
|
set datafile missing "-"
|
|
set timefmt "%Y-%m-%d"
|
|
set format x "%y-%m-%d"
|
|
set datafile sep ' '
|
|
set autoscale
|
|
set terminal png size 500,150
|
|
set output "stats.png"
|
|
set term png tiny
|
|
plot for [i=2:*] 'StatsTmp' using 1:i w l title columnhead(i)
|
|
EOFMarker
|
|
) || true
|
|
rm StatsTmp || true
|
|
cd .. || true
|
|
fi || true
|
|
done
|
|
# Clean files
|
|
rm StatsTmp2
|
|
rm Stats3
|
|
- name: Create global stats
|
|
run: |
|
|
# Prepare data
|
|
cp Stats Stats3
|
|
# Inverse file
|
|
gawk -i inplace '{for(i=NF;i>1;i--)printf "%s ",$i;printf "%s",$1;print ""}' Stats3
|
|
# Only totals
|
|
head -n 2 Stats3 > tmp_file && mv tmp_file Stats3
|
|
# Transpose data
|
|
awk '
|
|
{
|
|
for (i=1; i<=NF; i++) {
|
|
a[NR,i] = $i
|
|
}
|
|
}
|
|
NF>p { p = NF }
|
|
END {
|
|
for(j=1; j<=p; j++) {
|
|
str=a[1,j]
|
|
for(i=2; i<=NR; i++){
|
|
str=str" "a[i,j];
|
|
}
|
|
print str
|
|
}
|
|
}' Stats3 > StatsTmp && mv StatsTmp .github/Stats3
|
|
cd .github || true
|
|
sed -i "1d" Stats3
|
|
# Plot graph
|
|
gnuplot -persist <<-EOFMarker
|
|
set title 'Total addons'
|
|
set ylabel 'Number of installations'
|
|
set xdata time
|
|
set datafile missing "-"
|
|
set timefmt "%Y-%m-%d"
|
|
set format x "%y-%m-%d"
|
|
set datafile sep ' '
|
|
set key top left autotitle columnheader
|
|
set autoscale
|
|
set terminal png size 500,300
|
|
set output 'stats.png'
|
|
set term png tiny
|
|
plot 'Stats3' using 1:2 lt rgb 'red' w l title 'Total addons' smooth bezier
|
|
EOFMarker
|
|
rm Stats3
|
|
cd .. || true
|
|
- name: Clean
|
|
run: |
|
|
echo "Starting run"
|
|
if [ -f stats.png ]; then rm stats.png; fi
|
|
if [ -f Stats3 ]; then rm Stats3; fi
|
|
- name: Update stars
|
|
run: |
|
|
echo "Starting run"
|
|
# Get stars
|
|
wget -S -O .github/stars.svg https://contrib.rocks/image?repo=alexbelgium/hassio-addons || true
|
|
# Get stars2
|
|
wget -S -O .github/stars2.svg https://git-lister.onrender.com/api/stars/alexbelgium/hassio-addons?limit=30 || true
|
|
# Get stars evolution
|
|
wget -S -O .github/starsevol.svg "https://api.star-history.com/svg?repos=alexbelgium/hassio-addons&type=Date" || true
|
|
- name: Commit if needed
|
|
uses: EndBug/add-and-commit@v11.0.0
|
|
with:
|
|
message: "GitHub bot : graphs updated"
|
|
default_author: github_actions
|