-
-
Notifications
You must be signed in to change notification settings - Fork 1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
e90b71c
commit 893b271
Showing
22 changed files
with
372 additions
and
88 deletions.
There are no files selected for viewing
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 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,187 @@ | ||
--- | ||
# 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: 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 }} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,7 +9,7 @@ name: Update Homebrew release | |
|
||
on: | ||
release: | ||
types: [created, edited] | ||
types: [released] | ||
|
||
concurrency: | ||
group: "${{ github.workflow }}-${{ github.event.release.tag_name }}" | ||
|
@@ -18,14 +18,13 @@ concurrency: | |
jobs: | ||
update-homebrew-release: | ||
if: >- | ||
github.repository_owner == 'LizardByte' && | ||
!github.event.release.draft && !github.event.release.prerelease | ||
github.repository_owner == 'LizardByte' | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Check if Homebrew repo | ||
env: | ||
TOPIC: homebrew-pkg | ||
id: check | ||
id: check-label | ||
uses: actions/github-script@v7 | ||
with: | ||
script: | | ||
|
@@ -46,7 +45,7 @@ jobs: | |
- name: Download release asset | ||
id: download | ||
if: >- | ||
steps.check.outputs.hasTopic == 'true' | ||
steps.check-label.outputs.hasTopic == 'true' | ||
uses: robinraju/[email protected] | ||
with: | ||
repository: "${{ github.repository }}" | ||
|
@@ -59,7 +58,7 @@ jobs: | |
|
||
- name: Publish Homebrew Formula | ||
if: >- | ||
steps.check.outputs.hasTopic == 'true' && | ||
steps.check-label.outputs.hasTopic == 'true' && | ||
fromJson(steps.download.outputs.downloaded_files)[0] | ||
uses: LizardByte/[email protected] | ||
with: | ||
|
Oops, something went wrong.