name: Generate Clients & Examples
on: [push]

jobs:
  generate:
    runs-on: ubuntu-latest
    steps:
      - name: Set up Go 1.13
        uses: actions/setup-go@v2
        with:
          go-version: 1.13
        id: go

      - name: Install Protoc
        uses: arduino/setup-protoc@master

      - name: Check out this code
        uses: actions/checkout@v2
        with:
          path: services

      - name: Check out micro code
        uses: actions/checkout@v2
        with:
          repository: 'micro/micro'
          path: 'micro'
          ref: 'master'

      - name: Enable caching
        uses: actions/cache@v2
        with:
          path: ~/go/pkg/mod
          key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
          restore-keys: |
            ${{ runner.os }}-go-

      - name: Install protoc gen micro plugin
        working-directory: micro/cmd/protoc-gen-micro
        run: |
          go get -u github.com/golang/protobuf/protoc-gen-go
          go install

      - name: Install openapi plugin
        working-directory: micro/cmd/protoc-gen-openapi
        run: |
          go install

      - name: install prettier
        working-directory: services
        run: |
          sudo npm install -g prettier

      - name: Generate clients
        working-directory: services
        if: github.ref == 'refs/heads/master'
        env:
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
        run: |
          pwd
          cd cmd/clients;
          go install;
          cd ../..;
          clients .

      - uses: EndBug/add-and-commit@v7
        with:
          cwd: './services'
