name: eslint-config-wishket-dev

on:
  push:
    branches-ignore:
      - master
    paths:
      - '**'
      - '.github/workflows/eslint-config-wishket-dev.yml'

env:
  NODE_OPTIONS: --max_old_space_size=4096

jobs:
  install-dependencies:
    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: Install dependencies
        if: steps.cache.outputs.cache-hit != 'true'
        run: yarn install --frozen-lockfile

  publish-dev:
    runs-on: ubuntu-latest
    needs: [install-dependencies]
    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 dev
        run: |
          cat <<< "$( jq '.version = "0.0.0"' package.json )" > package.json
          echo -e "---\n'@wishket/eslint-config-wishket': patch\n---\n\nPublish dev" > .changeset/force-publish.md
          yarn changeset version --snapshot
          yarn changeset publish --tag dev
        env:
          GITHUB_TOKEN: ${{ secrets.PJW_GITHUB_TOKEN }}

      - name: Output dev 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 }}