name: eslint-config-wishket-release

on:
  release:
    types: [published]

env:
  NODE_OPTIONS: --max_old_space_size=4096

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Setup node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'

      - name: Restore dependencies from cache
        id: cache
        uses: actions/cache@v3
        with:
          path: ./node_modules
          key: ${{ runner.os }}-yarn-${{ hashFiles(format('{0}{1}', github.workspace, '/yarn.lock')) }}
          restore-keys: |
            ${{ runner.os }}-yarn-
      - name: Install dependencies
        if: steps.cache.outputs.cache-hit != 'true'
        run: yarn install --frozen-lockfile

      - name: Create .npmrc
        run: |
          cat << EOF > "$HOME/.npmrc"
            //registry.npmjs.org/:_authToken=$NPM_TOKEN
          EOF
        env:
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

      - name: Publish
        run: |
          TAG_NAME=${GITHUB_REF#refs/tags/}
          TAG_NAME=${TAG_NAME#v}
          echo "TAG_NAME=$TAG_NAME"
          cat <<< "$( jq ".version = \"$TAG_NAME\"" package.json )" > package.json
          cat package.json
          echo -e "---\n'@wishket/eslint-config-wishket': patch\n---\n\nPublish with tag $TAG_NAME" > .changeset/force-publish.md
          yarn changeset publish
        env:
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
          GITHUB_TOKEN: ${{ secrets.PJW_GITHUB_TOKEN }}

      - name: Output version number
        run: |
          name=$(jq -r .name package.json)
          version=$(jq -r .version package.json)
          yarn dlx action-status --context "Published $name" --state success --description $version --url "https://unpkg.com/$name@$version/"
        env:
          GITHUB_TOKEN: ${{ secrets.PJW_GITHUB_TOKEN }}