v2025.118.151840 #1
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
# This action is a candidate to centrally manage in https://github.com/<organization>/.github/ | |
# If more Flathub applications are developed, consider moving this action to the organization's .github repository, | |
# using the `flathub-pkg` repository label to identify repositories that should trigger this workflow. | |
# Update Flathub on release events. | |
name: Update flathub repo | |
on: | |
release: | |
types: [released] | |
concurrency: | |
group: "${{ github.workflow }}-${{ github.event.release.tag_name }}" | |
cancel-in-progress: true | |
jobs: | |
update-flathub-repo: | |
env: | |
FLATHUB_PKG: dev.lizardbyte.app.${{ github.event.repository.name }} | |
if: >- | |
github.repository_owner == 'LizardByte' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check if flathub repo | |
env: | |
TOPIC: flathub-pkg | |
id: check-label | |
uses: actions/github-script@v7 | |
with: | |
script: | | |
const topic = process.env.TOPIC; | |
console.log(`Checking if repo has topic: ${topic}`); | |
const repoTopics = await github.rest.repos.getAllTopics({ | |
owner: context.repo.owner, | |
repo: context.repo.repo | |
}); | |
console.log(`Repo topics: ${repoTopics.data.names}`); | |
const hasTopic = repoTopics.data.names.includes(topic); | |
console.log(`Has topic: ${hasTopic}`); | |
core.setOutput('hasTopic', hasTopic); | |
- name: Check if latest GitHub release | |
id: check-release | |
if: >- | |
steps.check-label.outputs.hasTopic == 'true' | |
uses: actions/github-script@v7 | |
with: | |
script: | | |
const latestRelease = await github.rest.repos.getLatestRelease({ | |
owner: context.repo.owner, | |
repo: context.repo.repo | |
}); | |
core.setOutput('isLatestRelease', latestRelease.data.tag_name === context.payload.release.tag_name); | |
- name: Checkout | |
if: >- | |
steps.check-label.outputs.hasTopic == 'true' && | |
steps.check-release.outputs.isLatestRelease == 'true' | |
uses: actions/checkout@v4 | |
- name: Checkout flathub-repo | |
if: >- | |
steps.check-label.outputs.hasTopic == 'true' && | |
steps.check-release.outputs.isLatestRelease == 'true' | |
uses: actions/checkout@v4 | |
with: | |
repository: "flathub/${{ env.FLATHUB_PKG }}" | |
path: "flathub/${{ env.FLATHUB_PKG }}" | |
- name: Clean up legacy files | |
if: >- | |
steps.check-label.outputs.hasTopic == 'true' && | |
steps.check-release.outputs.isLatestRelease == 'true' | |
working-directory: flathub/${{ env.FLATHUB_PKG }} | |
run: | | |
rm -rf ./* | |
- name: Copy github files | |
if: >- | |
steps.check-label.outputs.hasTopic == 'true' && | |
steps.check-release.outputs.isLatestRelease == 'true' | |
working-directory: flathub/${{ env.FLATHUB_PKG }} | |
run: | | |
mkdir -p .github/ISSUE_TEMPLATE | |
# sponsors | |
curl -sSL https://github.com/LizardByte/.github/raw/refs/heads/master/.github/FUNDING.yml \ | |
-o .github/FUNDING.yml | |
# pull request template | |
curl -sSL https://github.com/LizardByte/.github/raw/refs/heads/master/.github/pull_request_template.md \ | |
-o .github/pull_request_template.md | |
# issue config | |
curl -sSL https://github.com/LizardByte/.github/raw/refs/heads/master/.github/ISSUE_TEMPLATE/config.yml \ | |
-o .github/ISSUE_TEMPLATE/config.yml | |
- name: Download release asset | |
id: download | |
if: >- | |
steps.check-label.outputs.hasTopic == 'true' && | |
steps.check-release.outputs.isLatestRelease == 'true' | |
uses: robinraju/[email protected] | |
with: | |
repository: "${{ github.repository }}" | |
tag: "${{ github.event.release.tag_name }}" | |
fileName: "flathub.tar.gz" | |
tarBall: false | |
zipBall: false | |
out-file-path: "flathub/${{ env.FLATHUB_PKG }}" | |
extract: true | |
- name: Delete arhive | |
if: >- | |
steps.check-label.outputs.hasTopic == 'true' && | |
steps.check-release.outputs.isLatestRelease == 'true' | |
run: | | |
rm -f flathub/${{ env.FLATHUB_PKG }}/flathub.tar.gz | |
- name: Update metainfo.xml | |
id: update_metainfo | |
if: >- | |
steps.check-label.outputs.hasTopic == 'true' && | |
steps.check-release.outputs.isLatestRelease == 'true' | |
run: | | |
xml_file="flathub/${{ env.FLATHUB_PKG }}/${{ env.FLATHUB_PKG }}.metainfo.xml" | |
# Extract release information | |
version="${{ github.event.release.tag_name }}" && version="${version#v}" | |
date="${{ github.event.release.published_at }}" && date="${date%%T*}" | |
changelog="${{ github.event.release.body }}" && changelog="${changelog//&/&}" && \ | |
changelog="${changelog//</<}" && changelog="${changelog//>/>}" | |
# Store the old release information into a temp file to be used for precise replacement | |
tmpfile=$(mktemp) | |
# Match the existing <release> block, replace it with the new data | |
awk -v version="$version" -v date="$date" -v changelog="$changelog" ' | |
BEGIN { replaced = 0 } | |
/<release version=.*>/ { | |
if (!replaced) { | |
print "<release version=\"" version "\" date=\"" date "\">" | |
print "<description><p>" changelog "</p></description>" | |
print "</release>" | |
replaced = 1 | |
} | |
} | |
!/<release version=.*>/ && !/<\/release>/ { print $0 } | |
' "$xml_file" > "$tmpfile" | |
# Move the updated file back to the original location | |
mv "$tmpfile" "$xml_file" | |
- name: Update submodule | |
if: >- | |
steps.check-label.outputs.hasTopic == 'true' && | |
steps.check-release.outputs.isLatestRelease == 'true' | |
run: | | |
# Get the current commit of the submodule in the main repository | |
git submodule update --init packaging/linux/flatpak/deps/shared-modules | |
cd ${{ github.workspace }}/packaging/linux/flatpak/deps/shared-modules | |
main_commit=$(git rev-parse HEAD) | |
# update submodules | |
cd ${{ github.workspace }}/flathub/${{ env.FLATHUB_PKG }} | |
git submodule update --init shared-modules | |
cd shared-modules | |
git checkout $main_commit | |
- name: Create/Update Pull Request | |
if: >- | |
steps.check-label.outputs.hasTopic == 'true' && | |
steps.check-release.outputs.isLatestRelease == 'true' && | |
fromJson(steps.download.outputs.downloaded_files)[0] | |
uses: peter-evans/create-pull-request@v7 | |
with: | |
path: "flathub/${{ env.FLATHUB_PKG }}" | |
token: ${{ secrets.GH_BOT_TOKEN }} | |
commit-message: "chore: Update ${{ env.FLATHUB_PKG }} to ${{ github.event.release.tag_name }}" | |
branch: bot/bump-${{ env.FLATHUB_PKG }}-${{ github.event.release.tag_name }} | |
delete-branch: true | |
title: "chore: Update ${{ env.FLATHUB_PKG }} to ${{ github.event.release.tag_name }}" | |
body: ${{ github.event.release.body }} |