# this is what docs.conda.io refers to as `miniconda`

# conda requires conda to build conda since 23.11. so, we use miniconda's installer script
# into a venv

warnings:
  - vendored

versions:
  url: https://repo.anaconda.com/miniconda/
  match: /Miniconda3-py311_\d+\.\d+\.\d+-\d+-MacOSX-arm64.sh/
  strip:
    - /Miniconda3-py311_/
    - /-\d+-MacOSX-arm64.sh/

dependencies:
  pkgx.sh: ^1
  openssl.org: ^1.1

runtime:
  env:
    CRYPTOGRAPHY_OPENSSL_NO_LEGACY: 1

build:
  dependencies:
    # https://docs.conda.io/projects/miniconda/en/latest/#latest-miniconda-installer-links
    python.org: =3.11.5
    gnu.org/patch: '*'
    curl.se: '*'
  script:
    - bkpyvenv stage {{prefix}} {{version}}
    # FIXME: we need a way to handle suffix versions
    - |
      for v in 9 8 7 6 5 4 3 2 1 0; do
        if curl -fLS https://repo.anaconda.com/miniconda/Miniconda3-py311_{{version}}-$v-${SUFFIX}.sh -o miniconda.sh; then
          break
        fi
      done
      test -f miniconda.sh
    - chmod +x miniconda.sh
    - ./miniconda.sh -b -f -s -p {{prefix}}/venv

    # stops conda from installing to our versioned prefix by default
    - run: |
        cd conda-{{version}}-*/lib/python3.11/site-packages
        patch -p1 < $SRCROOT/props/context.py.diff
      working-directory: ${{prefix}}/venv/pkgs
    - run: patch -p1 < $SRCROOT/props/context.py.diff
      working-directory: ${{prefix}}/venv/lib/python3.11/site-packages

    - bkpyvenv seal {{prefix}} conda

    # we desire to provide a conda that doesn’t require you to force it into
    # your shellrc this command modifies the installation to prevent it
    # erroring so we have to do prior to pkging it
    - '{{prefix}}/bin/conda init'

    # put the conda libs in a findable path
    - run: ln -s venv/lib lib
      working-directory: ${{prefix}}
  env:
    darwin/aarch64:
      SUFFIX: MacOSX-arm64
    darwin/x86-64:
      SUFFIX: MacOSX-x86_64
    linux/x86-64:
      SUFFIX: Linux-x86_64
    linux/aarch64:
      SUFFIX: Linux-aarch64 # not arm64. weird.

provides:
  - bin/conda

test:
  - conda --version | grep {{version}}
  - |
    source /dev/stdin <<<"$(conda shell.bash hook)"
    conda create --yes --name snowflakes biopython
    conda activate snowflakes
    conda info --envs | grep snowflakes
    conda deactivate

  # check env has been restored
  - |
    if ! conda info --envs | grep snowflakes; then
      exit 1
    fi
