name: Release
on:
  push:
    tags:
      - v*.*.*

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: Setup Node
        uses: actions/setup-node@v3
        with:
          node-version: '16'
          registry-url: https://registry.npmjs.org

      - name: Determine npm cache directory
        id: npm-cache
        run: |
          echo "::set-output name=dir::$(npm config get cache)"

      - name: Restore npm cache
        uses: actions/cache@v3
        with:
          path: ${{ steps.npm-cache.outputs.dir }}
          key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-node-

      - name: Npm Install
        run: npm install

      - name: Version
        id: version
        run: |
          tag=${GITHUB_REF/refs\/tags\//}
          version=${tag#v}
          echo "::set-output name=version::${version}"

      - name: Build # build npm
        run: npm run eb:build -- ${{ steps.version.outputs.version }}

      - name: Build Docs
        run: npm run eb:docs -- ${{ steps.version.outputs.version }}

      - name: Pages # github pages
        uses: JamesIves/github-pages-deploy-action@v4.3.0
        with:
          branch: gh-pages
          folder: docs
      
      - name: Release # release
        uses: release-drafter/release-drafter@v5
        with:
          version: ${{ steps.version.outputs.version }}
          publish: true
        env:
          GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}

      - name: Publish # npm publish
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPMJS_TOKEN }}
        run: npm run eb:publish -- ${{ steps.version.outputs.version }}
      
      - name: Purge # purge cdn
        run: npm run eb:purge -- ${{ steps.version.outputs.version }}