stages:
  - fmt
  - tests
  - quality
  - publish

.rust_stable_lin64:
  image: registry.duniter.org/docker/rust/rust-x64-stable-ci:latest
  tags:
    - redshift
  before_script:
    - export PATH="$HOME/.cargo/bin:$PATH"
    - rustup show
    - rustc --version && cargo --version

fmt:
  extends: .rust_stable_lin64
  stage: fmt
  script:
    - cargo fmt -- --version
    - cargo fmt -- --check
        
tests:linux64:stable:
  extends: .rust_stable_lin64
  stage: tests
  tags:
    - redshift
  script: 
    - RUSTFLAGS="-D warnings" cargo build
    - cargo test --doc
    - cargo tarpaulin --all --all-features --ignore-tests -iv --out Xml
    - bash <(curl -s https://codecov.io/bash)

clippy:
  extends: .rust_stable_lin64
  stage: quality
  script:
    - cargo clippy -- -V
    - cargo clippy --all --tests -- -D warnings --verbose
    
audit_dependencies:
  extends: .rust_stable_lin64
  stage: quality
  script:
    - cargo deny -V
    - cargo deny check

publish:
  extends: .rust_stable_lin64
  stage: publish
  rules:
    - if: $CI_COMMIT_TAG
    - when: never

  script:
    - bash "publish.sh"
