name: 📦 Upload Interfaces
on:
  push:
    branches:
      - main
jobs:
  upload-interfaces:
    runs-on: "ubuntu-latest"
    steps:
      - uses: actions/checkout@v4
        with:
          submodules: recursive
      - name: Install Foundry
        uses: foundry-rs/foundry-toolchain@v1
        with:
          version: nightly
      - name: "Generate and prepare the contract artifacts"
        run: |
          mkdir abis
          mkdir interfaces
          for file in $(find src -name '*.sol'); do
            if grep -q "interface " "$file" || grep -q "library " "$file"; then
              continue
            fi
            contract_name=$(basename "$file" .sol)
            forge inspect "$contract_name" abi > abis/"$contract_name".json
            cast interface abis/"$contract_name".json --name I"$contract_name" > interfaces/I"$contract_name".sol
          done
      - name: "Store the contract interfaces in CI"
        uses: "actions/upload-artifact@v4"
        with:
          name: "contract-interfaces"
          path: "interfaces"
