hashcom-rs 0.2.0

A fast, minimal but yet extensible framework for building and using hash commitment schemes
Documentation
name: "CI"

on:
  # Run this workflow every time there's a push on a PR targeting the "main" branch.
  pull_request:
    branches:
      - main
    paths:
      - "**.rs"
      - "Cargo.toml"
      - "Makefile"
      - ".github/dependabot.yml"
      - ".github/workflows/ci.yml"
      - ".github/workflows/cd.yml"

  # Run this workflow every time there's a push on the "main" branch.
  push:
    branches:
      - main

defaults:
  run:
    shell: bash

jobs:
  lint:
    strategy:
      matrix:
        os: [ ubuntu-latest ]

    name: "Runs linter on ${{ matrix.os }}"
    runs-on: ${{ matrix.os }}

    steps:
      - name: "Clones the repository"
        uses: actions/checkout@v3

      - name: "Installs rustfmt and clippy"
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          components: rustfmt, clippy

      - name: "Runs the code formatter"
        uses: actions-rs/cargo@v1
        with:
          command: fmt
          args: --all --check

      - name: "Runs the code analysis"
        uses: actions-rs/clippy-check@v1
        with:
          args: --all --all-features -- -D warnings
          token: ${{ secrets.GITHUB_TOKEN }}

  test:
    needs: lint

    strategy:
      matrix:
        os: [ ubuntu-latest, macos-latest, windows-latest ]

    name: "Executes the tests on ${{ matrix.os }}"
    runs-on: ${{ matrix.os }}

    steps:
      - name: "Clones the repository"
        uses: actions/checkout@v3

      - name: "Configures the Rust toolchain"
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable

      - name: "Executes the unit tests"
        uses: actions-rs/cargo@v1
        with:
          command: test

  build:
    needs: test

    strategy:
      matrix:
        os: [ ubuntu-latest, macos-latest, windows-latest ]

    name: "Builds the project on ${{ matrix.os }}"
    runs-on: ${{ matrix.os }}

    steps:
      - name: "Clones the repository"
        uses: actions/checkout@v3

      - name: "Configures the Rust toolchain"
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable

      - name: "Builds the project in release mode"
        uses: actions-rs/cargo@v1
        with:
          command: build
          args: --release --all-features