distributable:
  # FIXME: foundry has releases named "Nightly (YYYY-MM-DD)"
  # but their tags are "nightly-<sha>".
  # url: https://github.com/foundry-rs/foundry/archive/refs/tags/{{version.tag}}.tar.gz
  url: https://github.com/foundry-rs/foundry/archive/refs/tags/nightly-bdc04c278f8ac716ed5fd3994bc0da841807b5cf.tar.gz
  strip-components: 1
versions:
  # this would work with `version.tag`, except they're all pre-releases, which we
  # ignore
  # FIXME: https://github.com/pkgxdev/brewkit/issues/327
  # github: foundry-rs/foundry
  # strip:
  #   - /^Nightly \(/
  #   - /\)$/
  - 2024.4.12

dependencies:
  git-scm.org: ^2

build:
  dependencies:
    rust-lang.org: ^1.74 # edition: 2021
    rust-lang.org/cargo: '*'
  script:
    # install Forge
    - cargo install --path ./crates/forge $ARGS
    # install Cast
    - cargo install --path ./crates/cast $ARGS
    # install Anvil
    - cargo install --path ./crates/anvil $ARGS
    # install Chisel
    - cargo install --path ./crates/chisel $ARGS

  env:
    ARGS:
      - --root "{{prefix}}"
      - --profile local
      - --force
      - --locked

provides:
  - bin/forge
  - bin/anvil
  - bin/cast
  - bin/chisel

test:
  script:
    # forge uses git which has minimum config requirements.
    - |
      git init
      git config user.email "hello@pkgx.dev"
      git config user.name "pkgx"
    # And forge init requires a clean git repo.
    - |
      touch README.md
      git add -A
      git commit -m "Initial commit"
    - forge init hello_foundry
    - run: forge build && forge test
      working-directory: hello_foundry
