Skip to content

Commit

Permalink
Name commit and PR dynamically
Browse files Browse the repository at this point in the history
  • Loading branch information
michpohl committed Oct 29, 2024
1 parent 5132ef5 commit 8fc2520
Showing 1 changed file with 76 additions and 29 deletions.
105 changes: 76 additions & 29 deletions .github/workflows/regenerate_tidalapi_module.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@ name: Regenerate TidalApi Code

on:
push:
workflow_dispatch:
inputs:
target_branch:
description: "The branch to PR against"
required: false
default: "main"
env:
API_MODULE_DIR: tidalapi

permissions:
contents: write
Expand All @@ -17,71 +25,110 @@ jobs:
- name: Get link to released openapi-generator fork .jar
id: get_release
run: |
REPO_OWNER="tidal-music"
REPO_NAME="openapi-generator"
repo_owner="tidal-music"
repo_name="openapi-generator"
# Fetch the latest release information
curl -s -H -v "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
"https://api.github.com/repos/$REPO_OWNER/$REPO_NAME/releases/latest" > release_info.json
cat release_info.json
"https://api.github.com/repos/$repo_owner/$repo_name/releases/latest" > release_info.json
# Extract the download URL for the desired asset (example: 'my-asset.zip')
ASSET_ID=$(jq -r '.assets[] | select(.name == "openapi-generator-cli.jar") | .id' release_info.json)
ASSET_URL=$(jq -r '.assets[] | select(.name == "openapi-generator-cli.jar") | .browser_download_url' release_info.json)
echo "Asset URL: $ASSET_ID"
# Save asset URL for the next step
echo "::set-output name=asset_id::$ASSET_URL"
echo "::set-output name=asset_url::$ASSET_URL"
- name: Download generator binary
env:
ASSET_URL: ${{ steps.get_release.outputs.asset_url }}
run: |
REPO_OWNER="organization"
REPO_NAME="another-repo"
ASSET_ID=${{ steps.get_release.outputs.asset_id }}
# Download the asset using the GitHub API
echo "Downloading from ${{ env.ASSET_URL }}"
curl -L -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
-H "Accept: application/octet-stream" \
-o tidalapi/bin/openapi-generator-cli.jar \
"$ASSET_ID"
"${{ env.ASSET_URL }}"
- name: Run the the TidalAPI code generation
- name: Run the TidalAPI code generation
run: |
cd tidalapi
cd ${{ env.API_MODULE_DIR }}
chmod +x ./bin/openapi-generator-cli.jar
python ./bin/generate-api-files.py ./bin/generate-api-config.json
git status
env:
JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64

- name: Check for changes
id: check_changes
env:
GENERATED_FOLDER_NAME: "tidalapi/src/main/kotlin/com/tidal/sdk/tidalapi/generated"
run: |
git add ./tidalapi
changes_in_generated=$(git status -s $GENERATED_FOLDER_NAME | sed 's/"//g')
echo "Changes in $GENERATED_FOLDER_NAME:"
echo "$changes_in_generated"
if [ -n "$changes_in_generated" ]; then
changes_detected="true"
# Count the number of changed files (lines in changes_in_generated)
changed_file_count=$(echo "$changes_in_generated" | wc -l)
else
changes_detected="false"
changed_file_count=0
echo "No new changes found."
fi
{
echo 'changed_files<<EOF'
echo "$changes_in_generated"
echo 'EOF'
} >> $GITHUB_OUTPUT
echo "changes_detected=$changes_detected" >> $GITHUB_OUTPUT
echo "changed_file_count=$changed_file_count" >> $GITHUB_OUTPUT
- name: Commit changes
id: commit_changes
if: steps.check_changes.outputs.changes_detected == 'true'
run: |
git config user.email "[email protected]"
git config user.name "TIDAL Music Tools"
git checkout -b tidal-music-tools/Update-Tidal-Api
timestamp=$(date +"%Y-%m-%d-%H-%M-%S")
branch_name="tidal-music-tools/Update-Tidal-Api-$timestamp"
git checkout -b $branch_name
# Generate commit message with the number of changed files in the title and the list in the body
commit_title="Add ${{ steps.check_changes.outputs.changed_file_count }} files via GitHub Actions"
commit_body="Changed files:\n${{ steps.check_changes.outputs.changed_files }}"
git add .
git commit -m "Add new files via GitHub Actions"
git commit -m "$commit_title"$'\n\n'"$commit_body"
echo "branch_name=$branch_name" >> $GITHUB_OUTPUT
- name: Push changes
if: steps.check_changes.outputs.changes_detected == 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH_NAME: ${{ steps.commit_changes.outputs.branch_name }}
run: |
git push origin tidal-music-tools/Update-Tidal-Api
git push --set-upstream origin "${{env.BRANCH_NAME}}"
- name: Create Pull Request via API
if: steps.check_changes.outputs.changes_detected == 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CHANGED_FILES: ${{ steps.check_changes.outputs.changed_files }}
CHANGED_FILE_COUNT: ${{ steps.check_changes.outputs.changed_file_count }}
BRANCH_NAME: ${{ steps.commit_changes.outputs.branch_name }}
run: |
PR_DATA=$(jq -n --arg title "DO NOT REVIEW - Testing :-)" \
--arg head "new-feature-branch" \
--arg base "main" \
--arg body "This PR was created by GitHub Actions." \
pr_title="Automatic Tidal API module update - ${{env.CHANGED_FILE_COUNT}} files changed"
pr_body="Changed files:\n\n${{ env.CHANGED_FILES }}"
pr_body=$(echo -e "$pr_body")
pr_data=$(jq -n --arg title "$pr_title" \
--arg head "${{env.BRANCH_NAME}}" \
--arg base "${{ inputs.target_branch }}" \
--arg body "$pr_body" \
'{title: $title, head: $head, base: $base, body: $body}')
echo $pr_data
curl -X POST \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
-d "$PR_DATA" \
-d "$pr_data" \
https://api.github.com/repos/${{ github.repository }}/pulls

0 comments on commit 8fc2520

Please sign in to comment.