name: CI
on:
  push:
    branches:
      - master

jobs:
  build-deploy:
    runs-on: ubuntu-latest
    permissions:
      contents: write
      id-token: write
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
          registry-url: 'https://registry.npmjs.org'

      - run: npm install
      - run: npm run build
      - run: npm run doc

      - name: Generate Contributors Images
        uses: jaywcjlove/github-action-contributors@main
        with:
          filter-author: (renovate\[bot\]|renovate-bot|dependabot\[bot\])
          output: build/CONTRIBUTORS.svg
          avatarSize: 42

      - name: Create Tag
        id: create_tag
        uses: jaywcjlove/create-tag-action@main
        with:
          package-path: ./package.json

      - name: get tag version
        id: tag_version
        uses: jaywcjlove/changelog-generator@main

      - name: Generate Contributors Images
        uses: jaywcjlove/github-action-contributors@main
        with:
          filter-author: (renovate\[bot\]|renovate-bot|dependabot\[bot\])
          output: build/CONTRIBUTORS.svg
          avatarSize: 42

      - name: Deploy
        uses: peaceiris/actions-gh-pages@v4
        with:
          commit_message: ${{steps.tag_version.outputs.tag}} ${{ github.event.head_commit.message }}
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./build

      - name: Generate Changelog
        id: changelog
        uses: jaywcjlove/changelog-generator@main
        with:
          head-ref: ${{steps.create_tag.outputs.version}}
          filter-author: (renovate-bot|Renovate Bot)
          filter: '[R|r]elease[d]\s+[v|V]\d(\.\d+){0,2}'

      - name: Create Release
        uses: ncipollo/release-action@v1
        if: steps.create_tag.outputs.successful
        with:
          allowUpdates: true
          token: ${{ secrets.GITHUB_TOKEN }}
          name: ${{ steps.create_tag.outputs.version }}
          tag: ${{ steps.create_tag.outputs.version }}
          body: |
            [![Buy me a coffee](https://img.shields.io/badge/Buy%20me%20a%20coffee-048754?logo=buymeacoffee)](https://jaywcjlove.github.io/#/sponsor) [![](https://img.shields.io/badge/Open%20in-unpkg-blue)](https://uiwjs.github.io/npm-unpkg/#/pkg/rehype-rewrite@${{steps.create_tag.outputs.versionNumber}}/file/README.md) [![](https://img.shields.io/badge/Open%20in-unpkg-blue)](https://uiwjs.github.io/npm-unpkg/#/pkg/@wcjiang/notify@${{steps.changelog.outputs.version}}/file/README.md)
            
            Documentation ${{ steps.changelog.outputs.tag }}: https://raw.githack.com/jaywcjlove/iNotify/${{ steps.changelog.outputs.gh-pages-short-hash }}/index.html  
            Comparing Changes: ${{ steps.changelog.outputs.compareurl }}  

            ```shell
            npm i @wcjiang/notify@${{steps.create_tag.outputs.versionNumber}}
            ```

            ${{ steps.changelog.outputs.changelog }}
      
      # - uses: JS-DevTools/npm-publish@v1
      #   with:
      #     token: ${{ secrets.NPM_TOKEN }}
      #     package: ./package.json

      - run: npm publish --access public --provenance
        continue-on-error: true
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

