name: Push @workadventure/iframe-api-typings to NPM
on:
  release:
    types: [created]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      # Setup .npmrc file to publish to npm
      - uses: actions/setup-node@v2
        with:
          node-version: '14.x'
          registry-url: 'https://registry.npmjs.org'

      - name: Edit tsconfig.json to add declarations
        run: "sed -i 's/\"declaration\": false/\"declaration\": true/g' tsconfig.json"
        working-directory: "front"

      - name: Replace version number
        run: 'sed -i "s#VERSION_PLACEHOLDER#${GITHUB_REF/refs\/tags\//}#g" package.json'
        working-directory: "front/packages/iframe-api-typings"

      - name: Debug package.json
        run: cat package.json
        working-directory: "front/packages/iframe-api-typings"

      - name: Install Protoc
        uses: arduino/setup-protoc@v1
        with:
          version: '3.x'

      - name: "Install dependencies"
        run: yarn install
        working-directory: "front"

      - name: "Install messages dependencies"
        run: yarn install
        working-directory: "messages"

      - name: "Build proto messages"
        run: yarn run proto && yarn run copy-to-front
        working-directory: "messages"

      - name: "Create index.html"
        run: ./templater.sh
        working-directory: "front"

      - name: "Build"
        run: yarn run build
        env:
          API_URL: "localhost:8080"
        working-directory: "front"

      # We build the front to generate the typings of iframe_api, then we copy those typings in a separate package.
      - name: Copy typings to package dir
        run: cp front/dist/src/iframe_api.d.ts front/packages/iframe-api-typings/iframe_api.d.ts

      - name: Install dependencies in package
        run: yarn install
        working-directory: "front/packages/iframe-api-typings"

      - name: Publish package
        run: yarn publish
        working-directory: "front/packages/iframe-api-typings"
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
