name: CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]
  workflow_dispatch:
  
env:
  ACTIONS_ALLOW_UNSECURE_COMMANDS: true
  OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
  BBM_CAIYUN_API_KEY: ${{ secrets.BBM_CAIYUN_API_KEY }}

jobs:
  typos-check:
    name: Spell Check with Typos
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Actions Repository
        uses: actions/checkout@v3
      - name: Check spelling with custom config file
        uses: crate-ci/typos@v1.16.6
        with:
          config: ./typos.toml
  testing:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: install python 3.9 
        uses: actions/setup-python@v4
        with:
          python-version: '3.9'
          cache: 'pip' # caching pip dependencies
      - name: Check formatting (black)
        run: |
            pip install black
            black . --check
      - name: install python requirements
        run: pip install -r requirements.txt

      - name: Test install
        run: |
            pip install .

      - name: make normal ebook test using google translate and cli
        run: |
            bbook_maker --book_name "test_books/Liber_Esther.epub" --test --test_num 10 --model google --translate-tags div,p
            bbook_maker --book_name "test_books/Liber_Esther.epub" --test --test_num 20 --model google

      - name: make txt book test using google translate
        run: |
          python3 make_book.py --book_name "test_books/the_little_prince.txt" --test --test_num 20 --model google

      - name: make txt book test with batch_size
        run: |
          python3 make_book.py --book_name "test_books/the_little_prince.txt" --test --batch_size 30 --test_num 20 --model google
  
      - name: make caiyun translator test
        if: env.BBM_CAIYUN_API_KEY != null
        run: |
          python3 make_book.py --book_name "test_books/the_little_prince.txt" --test --batch_size 30 --test_num 100 --model caiyun

      - name: make openai key ebook test
        if: env.BBM_DEEPL_API_KEY != null
        run: |
            python3 make_book.py --book_name "test_books/lemo.epub" --test --test_num 5 --language zh-hans
            python3 make_book.py --book_name "test_books/animal_farm.epub" --test --test_num 5 --language ja --model gpt3 --prompt prompt_template_sample.txt
            python3 make_book.py --book_name "test_books/animal_farm.epub" --test --test_num 5 --language ja --prompt prompt_template_sample.json
            python3 make_book.py --book_name test_books/Lex_Fridman_episode_322.srt --test --test_num 20
            
      - name: Rename and Upload ePub
        if: env.OPENAI_API_KEY != null
        uses: actions/upload-artifact@v2
        with:
          name: epub_output
          path: "test_books/lemo_bilingual.epub"
