name: Cdn 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-cdn:
    runs-on: ubuntu-latest
    needs: [pre-check, test, plugin-test]
    steps:
      - 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: Publish CDN
        run: |
          npm run publish:cdn
        env:
          TOAST_CLOUD_TENENTID: ${{ secrets.TOAST_CLOUD_TENENTID }}
          TOAST_CLOUD_STORAGEID: ${{ secrets.TOAST_CLOUD_STORAGEID }}
          TOAST_CLOUD_USERNAME: ${{ secrets.TOAST_CLOUD_USERNAME }}
          TOAST_CLOUD_PASSWORD: ${{ secrets.TOAST_CLOUD_PASSWORD }}