tari_utilities 0.1.1

A set of useful and commonly used utilities that are used in several places in the Tari project.
Documentation
version: 2.1

defaults:
  rust_image: &rust_image quay.io/tarilabs/rust_tari-build-with-deps:nightly-2020-01-08

commands:
  lint:
    description: Run cargo fmt
    steps:
      - run:
          name: Calculate dependencies
          command: |
            rustc --version >rust-version
            test -e Cargo.lock || cargo generate-lockfile
      - restore_cache:
          keys:
            - v6-cargo-cache-{{arch}}-{{checksum "rust-version"}}-n-{{checksum "Cargo.lock"}}
      - run:
          name: tari_utilities tests
          command: |
             TOOLCHAIN=$(cat rust-toolchain)
             rustup component add --toolchain $TOOLCHAIN rustfmt
             cargo fmt --all -- --check
      - save_cache:
          paths:
            - /usr/local/cargo/registry
            - target
          key: v6-cargo-cache-{{arch}}-{{checksum "rust-version"}}-n-{{checksum "Cargo.lock"}}
  test:
    description: Run the tests
    parameters:
      release:
        description: Set this to true to compile in release mode.
        type: boolean
        default: false
    steps:
      - run:
          name: Calculate dependencies
          command: |
            rustc --version >rust-version
            test -e Cargo.lock || cargo generate-lockfile
      - restore_cache:
          keys:
            - v6-cargo-cache-{{arch}}-{{checksum "rust-version"}}-<<parameters.release>>-{{checksum "Cargo.lock"}}
      - run:
          name: tari_utilities tests
          command: cargo test --all <<# parameters.release >>--release<</ parameters.release >>
      - save_cache:
          paths:
            - /usr/local/cargo/registry
            - target
          key: v6-cargo-cache-{{arch}}-{{checksum "rust-version"}}-<<parameters.release>>-{{checksum "Cargo.lock"}}

jobs:
  test-debug:
    docker:
      - image: *rust_image
    resource_class: small
    steps:
      - checkout
      - test:
          release: false

  test-release:
    docker:
      - image: *rust_image
    resource_class: small
    steps:
      - checkout
      - test:
          release: true

  rustfmt:
    docker:
      - image: *rust_image
    resource_class: small
    steps:
      - checkout
      - lint

workflows:
  version: 2
  workflow:
    jobs:
      - rustfmt
      - test-debug
      - test-release