name: Build and Push Docker Image

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

concurrency: build_docker

permissions:
  packages: write
  id-token: write
  contents: write

jobs:
  build-and-push:
    runs-on: ubuntu-latest
    steps:
      # 1. Check out the repository to get the Dockerfile
      - name: Check out code
        uses: actions/checkout@v3
        with:
          fetch-depth: 0

      # 2. Log into GitHub Container Registry
      - name: Log in to GHCR
        uses: docker/login-action@v2
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      # 3. Build and push
      - name: Build and push Docker image
        run: |
          # Define image name
          IMAGE_NAME=ghcr.io/hacktricks-wiki/hacktricks-cloud/translator-image

          # Build Docker image
          docker build -t $IMAGE_NAME:latest .

          # Push Docker image to GHCR
          docker push $IMAGE_NAME:latest

          # Set image visibility to public
          curl -X PATCH \
            -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
            -H "Accept: application/vnd.github.v3+json" \
            https://api.github.com/user/packages/container/translator-image/visibility \
            -d '{"visibility":"public"}'
