name: Build dev documentation

on:
  pull_request:


jobs:
  build_and_package:
    runs-on: [self-hosted, doc-builder]
    container:
      image: huggingface/doc-builder-transformers
      options: "-v /home/github_actions:/mnt"
    env:
      PR_NUMBER: ${{ github.event.number }}
      EVENT_CONTEXT: ${{ toJSON(github.event) }}

    steps:
      - uses: actions/checkout@v2
        with:
          repository: 'huggingface/doc-builder'
          path: doc-builder

      - uses: actions/checkout@v2
        with:
          repository: 'huggingface/transformers'
          path: transformers

      - uses: actions/checkout@v2
        with:
          repository: 'huggingface/notebooks'
          path: notebooks

      - uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: Set env
        run: echo "WRITE=$(cat /mnt/WRITE)" >> $GITHUB_ENV

      - name: Comment PR
        uses: thollander/actions-comment-pull-request@v1
        if: github.event.action == 'opened'

        with:
          message: 'The docs for this PR live [here](https://moon-ci-docs.huggingface.co/docs/transformers/pr_${{ env.PR_NUMBER }}). All of your documentation changes will be reflected on that endpoint.'
          GITHUB_TOKEN: ${{ env.WRITE }}

      - name: Find Comment
        if: github.event.action == 'reopened'
        uses: peter-evans/find-comment@v1
        id: fc
        with:
          issue-number: ${{ env.PR_NUMBER }}
          comment-author: HuggingFaceDocBuilder

      - name: Update comment
        if: github.event.action == 'reopened'
        uses: peter-evans/create-or-update-comment@v1
        with:
          comment-id: ${{ steps.fc.outputs.comment-id }}
          token: ${{ env.WRITE }}
          edit-mode: replace
          body: |
            The docs for this PR live [here](https://moon-ci-docs.huggingface.co/docs/transformers/pr_${{ env.PR_NUMBER }}). All of your documentation changes will be reflected on that endpoint.

      - name: Loading cache.
        uses: actions/cache@v2
        id: cache
        with:
          path: ~/.cache/pip
          key: v1-test_build_doc
          restore-keys: |
            v1-test_build_doc-${{ hashFiles('setup.py') }}
            v1-test_build_doc

      - name: Setup environment
        run: |
          apt-get -y update && apt-get install -y libsndfile1-dev

          pip uninstall -y doc-builder
          pip install git+https://github.com/huggingface/doc-builder -U
          cd transformers
          pip install .[dev]
          cd ..

          export TORCH_VERSION=$(python -c "from torch import version; print(version.__version__.split('+')[0])")
          pip install torch-scatter -f https://data.pyg.org/whl/torch-${TORCH_VERSION}+cpu.html

          pip install torchvision
          python -m pip install 'git+https://github.com/facebookresearch/detectron2.git'

          apt install -y tesseract-ocr
          pip install pytesseract
          pip install pytorch-quantization --extra-index-url https://pypi.ngc.nvidia.com
          pip install https://github.com/kpu/kenlm/archive/master.zip

      - name: Setup git
        run: |
          git config --global user.name "Hugging Face Doc Builder"
          git config --global user.email docs@huggingface.co
          

          cd notebooks
          git pull origin master
          cd ..
          WRITE=`cat /mnt/WRITE`
          
          rm -rf doc-build-dev
          git clone https://HuggingFaceDocBuilder:$WRITE@github.com/huggingface/doc-build-dev

      - name: Make documentation
        run: |
          cd doc-builder &&
          doc-builder build transformers ../transformers/docs/source --build_dir ../doc-build-dev --notebook_dir notebooks/transformers_doc --clean --version pr_$PR_NUMBER --html &&
          cd ..

      - name: Push to repositories
        run: |
          cd doc-build-dev &&
          ls &&
          git add . &&
          git commit -m "Updated with commit ${{ github.sha }} See: https://github.com/huggingface/transformers/commit/${{ github.sha }}" &&
          git push origin main
