on:
  repository_dispatch:
    types: [spec_release]
#on: push

name: Generate VRChat API SDK

jobs:
  generate:
    runs-on: ubuntu-latest
    name: Generate VRChat API SDK
    steps:
      - uses: actions/setup-node@v1
        with:
          node-version: 16
      - uses: actions/checkout@v2
      - name: 'Cache node_modules'
        uses: actions/cache@v2
        with:
          path: node_modules
          key: ${{ runner.os }}-node-v16-${{ hashFiles('**/generate.sh') }}
          restore-keys: |
            ${{ runner.os }}-node-v16
#      - name: Install OpenAPI Generator CLI
#        run: npm install @openapitools/openapi-generator-cli
#      - name: Set OpenAPI Generator version
#        run: ./node_modules/\@openapitools/openapi-generator-cli/main.js version-manager set 5.3.0
      - name: Set up JDK 13
        uses: actions/setup-java@v2
        with:
          java-version: '13'
          distribution: 'adopt'
      - name: Install Rustup toolchain
        uses: actions-rs/toolchain@v1
        with:
            toolchain: stable
            override: true
      - name: Generate SDK Client
        run: bash ./generate.sh
      - name: Check version number
        run: |
          echo "spec_version=$(grep "version" ./Cargo.toml | cut -d "\"" -f 2)" >> $GITHUB_ENV
      - name: Print version number
        run: echo ${{ env.spec_version }}
      - name: Deploy SDK back into main branch
        uses: JamesIves/github-pages-deploy-action@4.1.5
        with:
          branch: main
          folder: .
          commit-message: "Upgrade Rust SDK to spec ${{ env.spec_version }}"
      - name: Remove openapi-generator-cli.jar before publish
        run: rm openapi-generator-cli.jar
      - name: Deploy to Crates.io
        uses: katyo/publish-crates@v1
        with:
          registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }}
          args: --allow-dirty
