name: Compile and package harmony_composer
on:
  pull_request:
  push:
    branches:
      - main

jobs:
  package_harmony_composer:
    container:
      image: hub.nationtech.io/harmony/harmony_composer:latest@sha256:7bd128d5b29b85ba9297fd6b0842c8860710551e39a1573d5d1271fafefa2c67
      options: --privileged
    runs-on: docker
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Build for Linux x86_64
        run: cargo build --release --bin harmony_composer --target x86_64-unknown-linux-gnu

      # - name: Build for Linux ARM64
      #   run: cargo build --release --bin harmony_composer --target aarch64-unknown-linux-gnu

      - name: Build for Windows x86_64 GNU
        run: cargo build --release --bin harmony_composer --target x86_64-pc-windows-gnu

      # - name: Build for MacOS ARM64
      #   run: cargo build --release --bin harmony_composer --target aarch64-apple-darwin

      - uses: actions/upload-artifact@v3
        with:
          name: binaries
          path: |
            target/x86_64-unknown-linux-gnu/release/harmony_composer
            target/x86_64-pc-windows-gnu/release/harmony_composer.exe

      - name: Setup log into hub.nationtech.io
        uses: docker/login-action@v3
        with:
          registry: hub.nationtech.io
          username: ${{ secrets.HUB_BOT_USER }}
          password: ${{ secrets.HUB_BOT_PASSWORD }}

      # TODO: build ARM images too
      - name: Build docker container
        run: docker build . -t hub.nationtech.io/harmony/harmony_composer

      - name: Push docker container
        run: docker push hub.nationtech.io/harmony/harmony_composer

      # - name: Set up Docker Buildx
      #   uses: docker/setup-buildx-action@v3

      # - name: Build and push
      #   uses: docker/build-push-action@v6
      #   with:
      #     context: .
      #     push: true
      #     tags: hub.nationtech.io/harmony/harmony_composer:latest
