# https://help.github.com/en/categories/automating-your-workflow-with-github-actions

name: "Continuous Integration"

on:
  push:
    branches:
      - master
      - develop
  pull_request:

jobs:
  continuous-integration-front:
    name: "Continuous Integration Front"

    runs-on: "ubuntu-latest"

    steps:
      - name: "Checkout"
        uses: "actions/checkout@v2.0.0"

      - name: "Setup NodeJS"
        uses: actions/setup-node@v1
        with:
          node-version: '14.x'

      - 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 ts-proto && yarn run copy-to-front-ts-proto && yarn run json-copy-to-front
        working-directory: "messages"

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

      - name: "Generate i18n files"
        run: yarn run typesafe-i18n
        working-directory: "front"

      - name: "Build"
        run: yarn run build
        env:
          PUSHER_URL: "//localhost:8080"
          ADMIN_URL: "//localhost:80"
        working-directory: "front"

      - name: "Build iframe-api"
        run: yarn run build-iframe-api
        working-directory: "front"

      - name: "Typecheck"
        run: yarn run typecheck
        working-directory: "front"

      - name: "Svelte check"
        run: yarn run svelte-check
        working-directory: "front"

      - name: "Lint"
        run: yarn run lint
        working-directory: "front"

      - name: "Pretty"
        run: yarn run pretty-check
        working-directory: "front"

      - name: "Jasmine"
        run: yarn test
        working-directory: "front"

  continuous-integration-pusher:
    name: "Continuous Integration Pusher"

    runs-on: "ubuntu-latest"

    steps:
      - name: "Checkout"
        uses: "actions/checkout@v2.0.0"

      - name: "Setup NodeJS"
        uses: actions/setup-node@v1
        with:
          node-version: '14.x'

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

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

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

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

      - name: "Build"
        run: yarn run tsc
        working-directory: "pusher"

      - name: "Lint"
        run: yarn run lint
        working-directory: "pusher"

      - name: "Jasmine"
        run: yarn test
        working-directory: "pusher"

      - name: "Prettier"
        run: yarn run pretty-check
        working-directory: "pusher"

  continuous-integration-back:
    name: "Continuous Integration Back"

    runs-on: "ubuntu-latest"

    steps:
      - name: "Checkout"
        uses: "actions/checkout@v2.0.0"

      - name: "Setup NodeJS"
        uses: actions/setup-node@v1
        with:
          node-version: '12.x'

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

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

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

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

      - name: "Build"
        run: yarn run tsc
        working-directory: "back"

      - name: "Lint"
        run: yarn run lint
        working-directory: "back"

      - name: "Jasmine"
        run: yarn test
        working-directory: "back"

      - name: "Prettier"
        run: yarn run pretty-check
        working-directory: "back"
