format #483
Workflow file for this run
This file contains hidden or 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
| name: format | |
| on: | |
| workflow_dispatch: | |
| # pull_request: | |
| # types: [closed] | |
| # branches: | |
| # - master | |
| # schedule: | |
| # - cron: "0 12 * * *" | |
| jobs: | |
| on_trigger: | |
| # if: ${{ github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' }} | |
| if: ${{ github.event_name == 'workflow_dispatch' }} | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: tibdex/github-app-token@v1.8.2 | |
| if: ${{ !env.ACT }} | |
| id: create-app-token | |
| with: | |
| app_id: ${{ secrets.APP_ID }} | |
| private_key: ${{ secrets.APP_PRIVATE_KEY }} | |
| - uses: actions/checkout@v4 | |
| if: ${{ !env.ACT }} | |
| with: | |
| token: ${{ steps.create-app-token.outputs.token }} | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: 'npm' | |
| - name: setup git | |
| run: | | |
| git config user.name "iptv-bot[bot]" | |
| git config user.email "84861620+iptv-bot[bot]@users.noreply.github.com" | |
| - name: install dependencies | |
| run: npm install | |
| - name: format internal playlists | |
| run: npm run playlist:format | |
| - name: check internal playlists | |
| run: | | |
| npm run playlist:lint | |
| npm run playlist:validate | |
| - name: changed files | |
| id: files_after | |
| run: | | |
| ANY_CHANGED=false | |
| ALL_CHANGED_FILES=$(git diff --name-only master -- streams/ | tr '\n' ' ') | |
| if [ -n "${ALL_CHANGED_FILES}" ]; then | |
| ANY_CHANGED=true | |
| fi | |
| echo "all_changed_files=$ALL_CHANGED_FILES" >> "$GITHUB_OUTPUT" | |
| echo "any_changed=$ANY_CHANGED" >> "$GITHUB_OUTPUT" | |
| - name: git status | |
| run: git status | |
| - name: commit changes | |
| if: steps.files_after.outputs.any_changed == 'true' | |
| run: | | |
| git add streams | |
| git status | |
| git commit -m "[Bot] Format /streams" -m "Committed by [iptv-bot](https://github.com/apps/iptv-bot) via [format](https://github.com/iptv-org/iptv/actions/runs/${{ github.run_id }}) workflow." --no-verify | |
| - name: push all changes to the repository | |
| if: ${{ !env.ACT && github.ref == 'refs/heads/master' && steps.files_after.outputs.any_changed == 'true' }} | |
| run: git push | |
| on_merge: | |
| if: github.event.pull_request.merged == true | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: tibdex/github-app-token@v1.8.2 | |
| if: ${{ !env.ACT }} | |
| id: create-app-token | |
| with: | |
| app_id: ${{ secrets.APP_ID }} | |
| private_key: ${{ secrets.APP_PRIVATE_KEY }} | |
| - uses: actions/checkout@v4 | |
| if: ${{ !env.ACT }} | |
| with: | |
| token: ${{ steps.create-app-token.outputs.token }} | |
| - name: changed files | |
| id: files | |
| run: | | |
| ANY_CHANGED=false | |
| ALL_CHANGED_FILES=$(git diff --name-only master -- streams/ | tr '\n' ' ') | |
| if [ -n "${ALL_CHANGED_FILES}" ]; then | |
| ANY_CHANGED=true | |
| fi | |
| echo "all_changed_files=$ALL_CHANGED_FILES" >> "$GITHUB_OUTPUT" | |
| echo "any_changed=$ANY_CHANGED" >> "$GITHUB_OUTPUT" | |
| - uses: actions/setup-node@v4 | |
| if: ${{ steps.files.outputs.any_changed == 'true' }} | |
| with: | |
| node-version: 22 | |
| cache: 'npm' | |
| - name: setup git | |
| if: steps.files.outputs.any_changed == 'true' | |
| run: | | |
| git config user.name "iptv-bot[bot]" | |
| git config user.email "84861620+iptv-bot[bot]@users.noreply.github.com" | |
| - name: install dependencies | |
| if: steps.files.outputs.any_changed == 'true' | |
| run: npm install | |
| - name: format internal playlists | |
| if: steps.files.outputs.any_changed == 'true' | |
| run: npm run playlist:format -- ${{ steps.files.outputs.all_changed_files }} | |
| - name: check internal playlists | |
| if: steps.files.outputs.any_changed == 'true' | |
| run: | | |
| npm run playlist:lint -- ${{ steps.files.outputs.all_changed_files }} | |
| npm run playlist:validate -- ${{ steps.files.outputs.all_changed_files }} | |
| - name: git status | |
| if: steps.files.outputs.any_changed == 'true' | |
| run: git status | |
| - name: changed files | |
| id: files_after | |
| run: | | |
| ANY_CHANGED=false | |
| ALL_CHANGED_FILES=$(git diff --name-only master -- streams/ | tr '\n' ' ') | |
| if [ -n "${ALL_CHANGED_FILES}" ]; then | |
| ANY_CHANGED=true | |
| fi | |
| echo "all_changed_files=$ALL_CHANGED_FILES" >> "$GITHUB_OUTPUT" | |
| echo "any_changed=$ANY_CHANGED" >> "$GITHUB_OUTPUT" | |
| - name: commit changes | |
| if: steps.files_after.outputs.any_changed == 'true' | |
| run: | | |
| git add streams | |
| git status | |
| git commit -m "[Bot] Format /streams" -m "Committed by [iptv-bot](https://github.com/apps/iptv-bot) via [format](https://github.com/iptv-org/iptv/actions/runs/${{ github.run_id }}) workflow." --no-verify | |
| - name: push all changes to the repository | |
| if: ${{ !env.ACT && github.ref == 'refs/heads/master' && steps.files_after.outputs.any_changed == 'true' }} | |
| run: git push |