name: Wrapper Npm Publish
on: [workflow_dispatch]
jobs:
  pre-check:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout branch
        uses: actions/checkout@v2
      - name: Use Node.js 15.x
        uses: actions/setup-node@v2.5.1
        with:
          node-version: '15.x'
      - name: Install
        run: |
          npm ci
      - name: Eslint
        run: |
          npm run lint:all
      - name: Check types
        run: |
          npm run test:types:all

  test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout branch
        uses: actions/checkout@v2
      - name: Use Node.js 15.x
        uses: actions/setup-node@v2.5.1
        with:
          node-version: '15.x'
      - name: Install
        run: |
          npm ci
      - name: Build
        run: |
          npm run build toastmark
      - name: Toastmark unit, integration test
        run: |
          npm run test:ci toastmark
      - name: Editor unit, integration test
        run: |
          npm run test:ci editor

  plugin-test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout branch
        uses: actions/checkout@v2
      - name: Use Node.js 15.x
        uses: actions/setup-node@v2.5.1
        with:
          node-version: '15.x'
      - name: Install
        run: |
          npm ci
      - name: Build
        run: |
          npm run build toastmark
          npm run build editor
      - name: chart plugin unit, integration test
        run: |
          npm run test:ci chart
      - name: color syntax plugin unit, integration test
        run: |
          npm run test:ci color
      - name: code syntax highlighting plugin unit, integration test
        run: |
          npm run test:ci code
      - name: table merged cell plugin unit, integration test
        run: |
          npm run test:ci table
      - name: uml plugin unit, integration test
        run: |
          npm run test:ci uml

  publish:
    runs-on: ubuntu-latest
    needs: [pre-check, test, plugin-test]
    steps:
      - uses: actions/checkout@v2
      - name: Check the package version
        id: check
        uses: PostHog/check-package-version@v2
        with:
          path: ./apps/editor/
      - name: Use Node.js 15.x
        uses: actions/setup-node@v2.5.1
        with:
          node-version: '15.x'
          registry-url: https://registry.npmjs.org/
      - name: Install
        run: |
          npm ci
      - name: Build
        run: |
          npm run build toastmark
          npm run build editor
          npm run build react
          npm run build vue
      - name: Npm Publish(react)
        working-directory: ./apps/react-editor
        run: |
          npm publish
        env:
          NODE_AUTH_TOKEN: ${{secrets.NPM_AUTH_TOKEN}}
      - name: Npm Publish(vue)
        working-directory: ./apps/vue-editor
        run: |
          npm publish
        env:
          NODE_AUTH_TOKEN: ${{secrets.NPM_AUTH_TOKEN}}
