resources:
  - name: deltachat-core-rust
    type: git
    icon: github
    source:
      branch: master
      uri: https://github.com/deltachat/deltachat-core-rust.git

  - name: deltachat-core-rust-release
    type: git
    icon: github
    source:
      branch: master
      uri: https://github.com/deltachat/deltachat-core-rust.git
      tag_filter: "v*"

jobs:
  - name: doxygen
    plan:
      - get: deltachat-core-rust
        trigger: true

      # Build Doxygen documentation
      - task: build-doxygen
        config:
          inputs:
            - name: deltachat-core-rust
          outputs:
            - name: c-docs
          image_resource:
            source:
              repository: alpine
            type: registry-image
          platform: linux
          run:
            path: sh
            args:
              - -ec
              - |
                apk add --no-cache doxygen git
                cd deltachat-core-rust
                scripts/run-doxygen.sh
                cd ..
                cp -av deltachat-core-rust/deltachat-ffi/html deltachat-core-rust/deltachat-ffi/xml c-docs/

      - task: upload-c-docs
        config:
          inputs:
            - name: c-docs
          image_resource:
            type: registry-image
            source:
              repository: alpine
          platform: linux
          run:
            path: sh
            args:
              - -ec
              - |
                apk add --no-cache rsync openssh-client
                mkdir -p ~/.ssh
                chmod 700 ~/.ssh
                echo "(("c.delta.chat".private_key))" > ~/.ssh/id_ed25519
                chmod 600 ~/.ssh/id_ed25519
                rsync -e "ssh -o StrictHostKeyChecking=no" -avz --delete c-docs/html/ delta@c.delta.chat:build-c/master

  - name: python-x86_64
    plan:
      - get: deltachat-core-rust
      - get: deltachat-core-rust-release
        trigger: true

      # Build manylinux image with additional dependencies
      - task: build-coredeps
        privileged: true
        config:
          inputs:
            # Building the latest, not tagged coredeps
            - name: deltachat-core-rust
          image_resource:
            source:
              repository: concourse/oci-build-task
            type: registry-image
          outputs:
            - name: coredeps-image
              path: image
          params:
            CONTEXT: deltachat-core-rust/scripts/coredeps
            UNPACK_ROOTFS: "true"
            BUILD_ARG_BASEIMAGE: quay.io/pypa/manylinux2014_x86_64
          platform: linux
          caches:
            - path: cache
          run:
            path: build

      # Use built image to build python wheels
      - task: build-wheels
        image: coredeps-image
        config:
          inputs:
            - name: deltachat-core-rust-release
              path: .
          outputs:
            - name: py-docs
              path: ./python/doc/_build/
            # Binary wheels
            - name: py-wheels
              path: ./python/.docker-tox/wheelhouse/
          platform: linux
          run:
            path: bash
            args:
              - -exc
              - |
                scripts/run_all.sh

      # Upload python docs to py.delta.chat
      - task: upload-py-docs
        config:
          inputs:
            - name: py-docs
          image_resource:
            type: registry-image
            source:
              repository: alpine
          platform: linux
          run:
            path: sh
            args:
              - -ec
              - |
                apk add --no-cache rsync openssh-client
                mkdir -p ~/.ssh
                chmod 700 ~/.ssh
                echo "(("c.delta.chat".private_key))" > ~/.ssh/id_ed25519
                chmod 600 ~/.ssh/id_ed25519
                rsync -e "ssh -o StrictHostKeyChecking=no" -avz --delete py-docs/html/ delta@py.delta.chat:build/master

      # Upload x86_64 wheels and source packages
      - task: upload-wheels
        config:
          inputs:
            - name: py-wheels
          image_resource:
            type: registry-image
            source:
              repository: debian
          platform: linux
          run:
            path: sh
            args:
              - -ec
              - |
                apt-get update -y
                apt-get install -y --no-install-recommends python3-pip python3-setuptools
                pip3 install devpi
                devpi use https://m.devpi.net/dc/master
                devpi login ((devpi.login)) --password ((devpi.password))
                devpi upload py-wheels/*manylinux201*

  - name: python-aarch64
    plan:
      - get: deltachat-core-rust
      - get: deltachat-core-rust-release
        trigger: true

      # Build manylinux image with additional dependencies
      - task: build-coredeps
        privileged: true
        config:
          inputs:
            # Building the latest, not tagged coredeps
            - name: deltachat-core-rust
          image_resource:
            source:
              repository: concourse/oci-build-task
            type: registry-image
          outputs:
            - name: coredeps-image
              path: image
          params:
            CONTEXT: deltachat-core-rust/scripts/coredeps
            UNPACK_ROOTFS: "true"
            BUILD_ARG_BASEIMAGE: quay.io/pypa/manylinux2014_aarch64
          platform: linux
          caches:
            - path: cache
          run:
            path: build

      # Use built image to build python wheels
      - task: build-wheels
        image: coredeps-image
        config:
          inputs:
            - name: deltachat-core-rust-release
              path: .
          outputs:
            - name: py-wheels
              path: ./python/.docker-tox/wheelhouse/
          platform: linux
          run:
            path: bash
            args:
              - -exc
              - |
                scripts/run_all.sh

      # Upload aarch64 wheels
      - task: upload-wheels
        config:
          inputs:
            - name: py-wheels
          image_resource:
            type: registry-image
            source:
              repository: debian
          platform: linux
          run:
            path: sh
            args:
              - -ec
              - |
                apt-get update -y
                apt-get install -y --no-install-recommends python3-pip python3-setuptools
                pip3 install devpi
                devpi use https://m.devpi.net/dc/master
                devpi login ((devpi.login)) --password ((devpi.password))
                devpi upload py-wheels/*manylinux201*

  - name: python-musl-x86_64
    plan:
      - get: deltachat-core-rust
      - get: deltachat-core-rust-release
        trigger: true

      # Build manylinux image with additional dependencies
      - task: build-coredeps
        privileged: true
        config:
          inputs:
            # Building the latest, not tagged coredeps
            - name: deltachat-core-rust
          image_resource:
            source:
              repository: concourse/oci-build-task
            type: registry-image
          outputs:
            - name: coredeps-image
              path: image
          params:
            CONTEXT: deltachat-core-rust/scripts/coredeps
            UNPACK_ROOTFS: "true"
            BUILD_ARG_BASEIMAGE: quay.io/pypa/musllinux_1_1_x86_64
          platform: linux
          caches:
            - path: cache
          run:
            path: build

      # Use built image to build python wheels
      - task: build-wheels
        image: coredeps-image
        config:
          inputs:
            - name: deltachat-core-rust-release
              path: .
          outputs:
            - name: py-wheels
              path: ./python/.docker-tox/wheelhouse/
          platform: linux
          run:
            path: bash
            args:
              - -exc
              - |
                scripts/run_all.sh

      # Upload musl x86_64 wheels
      - task: upload-wheels
        config:
          inputs:
            - name: py-wheels
          image_resource:
            type: registry-image
            source:
              repository: debian
          platform: linux
          run:
            path: sh
            args:
              - -ec
              - |
                apt-get update -y
                apt-get install -y --no-install-recommends python3-pip python3-setuptools
                pip3 install devpi
                devpi use https://m.devpi.net/dc/master
                devpi login ((devpi.login)) --password ((devpi.password))
                devpi upload py-wheels/*musllinux_1_1_x86_64*

  - name: python-musl-aarch64
    plan:
      - get: deltachat-core-rust
      - get: deltachat-core-rust-release
        trigger: true

      # Build manylinux image with additional dependencies
      - task: build-coredeps
        privileged: true
        config:
          inputs:
            # Building the latest, not tagged coredeps
            - name: deltachat-core-rust
          image_resource:
            source:
              repository: concourse/oci-build-task
            type: registry-image
          outputs:
            - name: coredeps-image
              path: image
          params:
            CONTEXT: deltachat-core-rust/scripts/coredeps
            UNPACK_ROOTFS: "true"
            BUILD_ARG_BASEIMAGE: quay.io/pypa/musllinux_1_1_aarch64
          platform: linux
          caches:
            - path: cache
          run:
            path: build

      # Use built image to build python wheels
      - task: build-wheels
        image: coredeps-image
        config:
          inputs:
            - name: deltachat-core-rust-release
              path: .
          outputs:
            - name: py-wheels
              path: ./python/.docker-tox/wheelhouse/
          platform: linux
          run:
            path: bash
            args:
              - -exc
              - |
                scripts/run_all.sh

      # Upload musl aarch64 wheels
      - task: upload-wheels
        config:
          inputs:
            - name: py-wheels
          image_resource:
            type: registry-image
            source:
              repository: debian
          platform: linux
          run:
            path: sh
            args:
              - -ec
              - |
                apt-get update -y
                apt-get install -y --no-install-recommends python3-pip python3-setuptools
                pip3 install devpi
                devpi use https://m.devpi.net/dc/master
                devpi login ((devpi.login)) --password ((devpi.password))
                devpi upload py-wheels/*musllinux_1_1_aarch64*
