name: ksponspeech

on:
  push:
    branches:
      - ksponspeech

  workflow_dispatch:

jobs:
  ksponspeech:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest]
        python-version: [3.8]
      fail-fast: false

    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Setup Python ${{ matrix.python-version }}
        uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.python-version }}
          cache: 'pip'
          cache-dependency-path: '**/requirements-ci.txt'

      - name: Install Python dependencies
        run: |
          grep -v '^#' ./requirements-ci.txt  | xargs -n 1 -L 1 pip install
          pip uninstall -y protobuf
          pip install --no-binary protobuf protobuf==3.20.*

      - name: Cache kaldifeat
        id: my-cache
        uses: actions/cache@v2
        with:
          path: |
            ~/tmp/kaldifeat
          key: cache-tmp-${{ matrix.python-version }}-2023-05-22

      - name: Install kaldifeat
        if: steps.my-cache.outputs.cache-hit != 'true'
        shell: bash
        run: |
          .github/scripts/install-kaldifeat.sh

      - name: Test
        shell: bash
        run: |
          export PYTHONPATH=$PWD:$PYTHONPATH
          export PYTHONPATH=~/tmp/kaldifeat/kaldifeat/python:$PYTHONPATH
          export PYTHONPATH=~/tmp/kaldifeat/build/lib:$PYTHONPATH

          .github/scripts/ksponspeech/ASR/run.sh

      - name: Show model files (2024-06-24)
        shell: bash
        run: |
          src=/tmp/model-2024-06-24
          ls -lh $src

      - name: Show model files (2024-06-16)
        shell: bash
        run: |
          src=/tmp/model-2024-06-16
          ls -lh $src

      - name: Upload model to huggingface (2024-06-24)
        env:
          HF_TOKEN: ${{ secrets.HF_TOKEN }}
        uses: nick-fields/retry@v3
        with:
          max_attempts: 20
          timeout_seconds: 200
          shell: bash
          command: |
            src=/tmp/model-2024-06-24
            git config --global user.email "csukuangfj@gmail.com"
            git config --global user.name "Fangjun Kuang"

            rm -rf hf
            export GIT_LFS_SKIP_SMUDGE=1
            export GIT_CLONE_PROTECTION_ACTIVE=false

            git clone https://huggingface.co/k2-fsa/sherpa-onnx-zipformer-korean-2024-06-24 hf
            cd hf
            git fetch
            git pull
            git merge -m "merge remote" --ff origin main
            cp -av $src/* ./
            ls -lh
            git lfs track "bpe.model"
            git lfs track "*.onnx"
            git add .
            git status
            git commit -m "update models"
            git status

            git push https://csukuangfj:$HF_TOKEN@huggingface.co/k2-fsa/sherpa-onnx-zipformer-korean-2024-06-24 main || true
            rm -rf hf

      - name: Upload model to huggingface (2024-06-16)
        env:
          HF_TOKEN: ${{ secrets.HF_TOKEN }}
        uses: nick-fields/retry@v3
        with:
          max_attempts: 20
          timeout_seconds: 200
          shell: bash
          command: |
            src=/tmp/model-2024-06-16
            git config --global user.email "csukuangfj@gmail.com"
            git config --global user.name "Fangjun Kuang"

            rm -rf hf
            export GIT_LFS_SKIP_SMUDGE=1
            export GIT_CLONE_PROTECTION_ACTIVE=false

            git clone https://huggingface.co/k2-fsa/sherpa-onnx-streaming-zipformer-korean-2024-06-16 hf
            cd hf
            git fetch
            git pull
            git merge -m "merge remote" --ff origin main
            cp -v $src/* ./
            ls -lh
            git lfs track "bpe.model"
            git lfs track "*.onnx"
            cp -av test_wavs $src/
            git add .
            git status
            git commit -m "update models"
            git status

            git push https://csukuangfj:$HF_TOKEN@huggingface.co/k2-fsa/sherpa-onnx-streaming-zipformer-korean-2024-06-16 main || true
            rm -rf hf

      - name: Prepare for release (2024-06-16)
        shell: bash
        run: |
          src=/tmp/model-2024-06-16
          d=sherpa-onnx-streaming-zipformer-korean-2024-06-16
          mv $src ./$d
          tar cjvf ${d}.tar.bz2 $d
          ls -lh

      - name: Prepare for release (2024-06-24)
        shell: bash
        run: |
          src=/tmp/model-2024-06-24
          d=sherpa-onnx-zipformer-korean-2024-06-24
          mv $src ./$d
          tar cjvf ${d}.tar.bz2 $d
          ls -lh

      - name: Release exported onnx models
        uses: svenstaro/upload-release-action@v2
        with:
          file_glob: true
          overwrite: true
          file: sherpa-onnx-*.tar.bz2
          repo_name: k2-fsa/sherpa-onnx
          repo_token: ${{ secrets.UPLOAD_GH_SHERPA_ONNX_TOKEN }}
          tag: asr-models
