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 if: ${{ !env.ACT }} 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: | git fetch origin master:master 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: | git fetch origin master:master 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: ${{ !env.ACT && 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 origin/master HEAD 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