Skip to content

Release-List Draft: Add JSON-Struct and Group HTML-Output #8

Release-List Draft: Add JSON-Struct and Group HTML-Output

Release-List Draft: Add JSON-Struct and Group HTML-Output #8

name: Update Releases
on:
schedule:
- cron: '29 12 * * *' # Runs every day at 12:29
push:
branches:
- main
jobs:
update-releases:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Fetch releases
run: |
curl -s "https://api.github.com/orgs/OpenKNX/repos?per_page=100&type=public" | jq -r '.[] | "\"\(.name)\" \(.releases_url)"' | sed 's/{\/id}//' > releases_urls.txt
cat releases_urls.txt
- name: Fetch release details
run: |
echo '{}' > releases.json
while read repo url; do
echo "Fetch release details from '$url' for repo '$repo'"
response=$(curl -s "$url")
if echo "$response" | jq empty 2>/dev/null; then
releases=$(echo "$response" | jq -r --arg repo "$repo" '[.[] | {isPrerelease: .prerelease, tag: .tag_name, name: .name, archivUrl: .html_url}]')
repo_url=$(curl -s "https://api.github.com/repos/OpenKNX/$repo" | jq -r '.html_url')
is_archived=$(curl -s "https://api.github.com/repos/OpenKNX/$repo" | jq -r '.archived')
jq --arg repo "$repo" --arg repo_url "$repo_url" --argjson releases "$releases" --argjson is_archived "$is_archived" \
'.[$repo] = {repo_url: $repo_url, isDeprecated: $is_archived, releases: $releases}' releases.json > tmp.json && mv tmp.json releases.json
else
echo "Warning: No valid JSON response from $url"
fi
done < releases_urls.txt
cat releases.json
- name: Update HTML
run: |
echo '<ul>' > releases.html
jq -r 'to_entries | .[] | "<li><strong>\(.key)</strong><ul>" + (.value.releases[] | "<li><a href=\"\(.archivUrl)\">\(.name) (\(.tag))</a></li>") + "</ul></li>"' releases.json >> releases.html
echo '</ul>' >> releases.html
mv releases.html releases_list.html
- name: Commit and push changes
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
git add releases_list.html releases.json
git commit -m 'Update releases list and generate JSON'
git push