name: Translator to IT (Italian)

on:
  push:
    branches:
      - master
    paths-ignore:
      - 'scripts/**'
      - '.gitignore'
      - '.github/**'
  workflow_dispatch:

concurrency: it

permissions:
  id-token: write
  contents: write

jobs:
  run-translation:
    runs-on: ubuntu-latest
    environment: prod
    env:
      LANGUAGE: Italian
      BRANCH: it

    steps:
      - name: Checkout code
        uses: actions/checkout@v2
        with:
          fetch-depth: 0 #Needed to download everything to be able to access the master & language branches

      - name: Set up Python
        uses: actions/setup-python@v2
        with:
          python-version: 3.8

      - name: Install python dependencies
        run: |
          python -m pip install --upgrade pip
          pip3 install openai tqdm tiktoken
      
      # Install Rust and Cargo
      - name: Install Rust and Cargo
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          override: true
      
      # Install mdBook and Plugins
      - name: Install mdBook and Plugins
        run: |
          cargo install mdbook
          cargo install mdbook-alerts
          cargo install mdbook-reading-time
          cargo install mdbook-pagetoc
          cargo install mdbook-tabs
          cargo install mdbook-codename

      
      - name: Update & install wget & translator.py
        run: |
          sudo apt-get update
          sudo apt-get install wget -y
          cd scripts
          rm -f translator.py
          wget https://raw.githubusercontent.com/carlospolop/hacktricks-cloud/master/scripts/translator.py
          cd ..

      - name: Download language branch #Make sure we have last version
        run: |
          git config --global user.name 'Translator'
          git config --global user.email 'github-actions@github.com'
          git checkout "$BRANCH"
          git pull
          git checkout master
      
      - name: Run translation script on changed files
        run: |
          echo "Starting translations"
          echo "Commit: $GITHUB_SHA"

          # Export the OpenAI API key as an environment variable
          export OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}

          # Run the translation script on each changed file
          git diff --name-only HEAD~1 | grep -v "SUMMARY.md" | while read -r file; do
            if echo "$file" | grep -qE '\.md$'; then
              echo -n "$file , " >> /tmp/file_paths.txt
            else
              echo "Skipping $file"
            fi
          done

          echo "Translating $(cat /tmp/file_paths.txt)"
          python scripts/translator.py --language "$LANGUAGE" --branch "$BRANCH" --api-key "$OPENAI_API_KEY" -f "$(cat /tmp/file_paths.txt)" -t 3

      # Push changes to the repository
      - name: Commit and push changes
        run: |
          git checkout "$BRANCH"
          git add -A
          git commit -m "Translated $BRANCH files" || true
          git push --set-upstream origin "$BRANCH"

      # Build the mdBook
      - name: Build mdBook
        run: mdbook build
      
      # Login in AWs
      - name: Configure AWS credentials using OIDC
        uses: aws-actions/configure-aws-credentials@v3
        with:
          role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
          aws-region: us-east-1
      
      # Sync the build to S3
      - name: Sync to S3
        run: aws s3 sync ./book s3://hacktricks-cloud/$BRANCH --delete