---
kind: pipeline
name: epp-client

platform:
  os: linux
  arch: amd64

steps:
  - name: check
    image: ayravat/rust:1.56.1-ci
    volumes:
      - name: ssh
        path: /root/.ssh
      - name: target
        path: /tmp/cargo-target
      - name: cache
        path: /tmp/cargo
      - name: config
        path: /root/.config/epp-client
    commands:
      - export CARGO_HOME=/tmp/cargo/$DRONE_BRANCH
      - export CARGO_TARGET_DIR=/tmp/cargo-target/$DRONE_BRANCH
      - mkdir -p $CARGO_HOME $CARGO_TARGET_DIR
      - cargo check --all-targets

  - name: fmt
    image: ayravat/rust:1.56.1-ci
    volumes:
      - name: ssh
        path: /root/.ssh
      - name: target
        path: /tmp/cargo-target
      - name: cache
        path: /tmp/cargo
      - name: config
        path: /root/.config/epp-client
    commands:
      - export CARGO_HOME=/tmp/cargo/$DRONE_BRANCH
      - export CARGO_TARGET_DIR=/tmp/cargo-target/$DRONE_BRANCH
      - mkdir -p $CARGO_HOME $CARGO_TARGET_DIR
      - cargo fmt --all -- --check

  - name: clippy
    image: ayravat/rust:1.56.1-ci
    volumes:
      - name: ssh
        path: /root/.ssh
      - name: target
        path: /tmp/cargo-target
      - name: cache
        path: /tmp/cargo
      - name: config
        path: /root/.config/epp-client
    commands:
      - export CARGO_HOME=/tmp/cargo/$DRONE_BRANCH
      - export CARGO_TARGET_DIR=/tmp/cargo-target/$DRONE_BRANCH
      - mkdir -p $CARGO_HOME $CARGO_TARGET_DIR
      - cargo clippy --workspace --all-targets -- -D warnings

  - name: test
    image: ayravat/rust:1.56.1-ci
    volumes:
      - name: ssh
        path: /root/.ssh
      - name: target
        path: /tmp/cargo-target
      - name: cache
        path: /tmp/cargo
      - name: config
        path: /root/.config/epp-client
    commands:
      - export CARGO_HOME=/tmp/cargo/$DRONE_BRANCH
      - export CARGO_TARGET_DIR=/tmp/cargo-target/$DRONE_BRANCH
      - mkdir -p $CARGO_HOME $CARGO_TARGET_DIR
      - cargo test -- --nocapture

  - name: crates.io
    image: ayravat/rust:1.56.1-docker
    volumes:
      - name: ssh
        path: /root/.ssh
      - name: target
        path: /tmp/cargo-target
      - name: cache
        path: /tmp/cargo
      - name: config
        path: /root/.config/epp-client
      - name: crates
        path: /root/.cargo
    commands:
      - export CARGO_HOME=/tmp/cargo/$DRONE_BRANCH
      - export CARGO_TARGET_DIR=/tmp/cargo-target/$DRONE_BRANCH
      - mkdir -p $CARGO_HOME $CARGO_TARGET_DIR
      - export CARGO_TOKEN=$(cat $HOME/.cargo/credentials-token)
      - cd epp-client
      - cargo publish --token $CARGO_TOKEN
      - cd ..
      - cd epp-client-macros
      - cargo publish --token $CARGO_TOKEN
    when:
      branch:
        - 0.2
        - 0.3
      event: push

volumes:
  - name: ssh
    host:
      path: /root/.ssh
  - name: config
    host:
      path: /root/.config/epp-client
  - name: crates
    host:
      path: /root/.cargo
  - name: target
    host:
      path: /var/drone/cache/epp-client-target
  - name: cache
    host:
      path: /var/drone/cache/epp-client-cache
...