This repository has been archived by the owner on Oct 13, 2024. It is now read-only.
Update Jellyfin release #64
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 Jellyfin plugins are developed, consider moving this action to the organization's .github repository, | |
# using the `jellyfin-plugin` repository label to identify repositories that should trigger have this workflow. | |
# Update Jellyfin repository on release events. | |
name: Update Jellyfin release | |
on: | |
release: | |
types: [created, edited, deleted] | |
concurrency: | |
group: "${{ github.workflow }}-${{ github.event.release.tag_name }}" | |
cancel-in-progress: false | |
jobs: | |
update-jellyfin-release: | |
if: >- | |
github.repository_owner == 'LizardByte' && | |
!github.event.release.draft && !github.event.release.prerelease | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check if Jellyfin repo | |
env: | |
TOPIC: jellyfin-plugin | |
id: check | |
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: Download release asset | |
id: download | |
if: >- | |
steps.check.outputs.hasTopic == 'true' && | |
github.event.action != 'deleted' | |
uses: robinraju/[email protected] | |
with: | |
repository: "${{ github.repository }}" | |
tag: "${{ github.event.release.tag_name }}" | |
fileName: "*.zip" | |
tarBall: false | |
zipBall: false | |
out-file-path: "release_downloads" | |
extract: false | |
- name: Loop through downloaded files | |
if: >- | |
steps.check.outputs.hasTopic == 'true' && | |
github.event.action != 'deleted' | |
id: loop | |
run: | | |
files=$(echo '${{ steps.download.outputs.downloaded_files }}' | jq -r '.[]') | |
file_number=0 | |
plugin="" | |
for file in $files; do | |
echo "$file" | |
# extract the zip file | |
unzip -o $file -d ./release_downloads/$file_number | |
# check if the extracted file contains a meta.json file | |
if [ -f ./release_downloads/$file_number/meta.json ]; then | |
plugin=$file | |
break | |
fi | |
file_number=$((file_number+1)) | |
done | |
if [ -z "$plugin" ]; then | |
echo "No plugin found in the downloaded files" | |
exit 1 | |
fi | |
echo "plugin_zip=$plugin" >> $GITHUB_OUTPUT | |
echo "found plugin: $plugin" | |
- name: Create/Update Jellyfin Release | |
if: >- | |
steps.check.outputs.hasTopic == 'true' | |
uses: LizardByte/[email protected] | |
with: | |
action: ${{ github.event.action == 'deleted' && 'remove' || 'add' }} | |
github_token: ${{ secrets.GH_BOT_TOKEN }} | |
committer_email: ${{ secrets.GH_BOT_EMAIL }} | |
committer_name: ${{ secrets.GH_BOT_NAME }} | |
release_tag: ${{ github.event.release.tag_name }} | |
zipfile: ${{ steps.loop.outputs.plugin_zip }} |