ed448-rust 0.1.1

Implementation of Edwards-Curve Digital Signature Algorithm (EdDSA) for ed448 only.
Documentation
name: Ci

# Controls when the action will run.
on:
  # Triggers the workflow on push or pull request events but only for the main branch
  push:
    branches:
      - main
      - dev
  pull_request:
    branches:
      - main

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

env:
  CARGO_TERM_COLOR: always

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  check:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - name: Checkout sources
        uses: actions/checkout@v2

      # Install stable toolchain
      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true

      # Runs the compilation checks
      - name: Run cargo check with defaults feature
        uses: actions-rs/cargo@v1
        with:
          command: check

      - name: Run cargo check with all features
        uses: actions-rs/cargo@v1
        with:
          command: check
          args: --all-features

  clippy_and_fmt:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - name: Checkout sources
        uses: actions/checkout@v2

      # Install nightly toolchain
      - name: Install nightly toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: default
          toolchain: nightly
          override: true
          components: clippy, rustfmt

      # Checks Rust code formatting
      - name: Run cargo fmt
        uses: actions-rs/cargo@v1
        with:
          command: fmt
          args: --all -- --check

      # Checks Rust code with Clippy
      - name: Run cargo clippy
        uses: actions-rs/cargo@v1
        continue-on-error: true # note: the compiler unexpectedly panicked. this is a bug.
        with:
          command: clippy
          args: --all-features -- -D warnings

  test:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - name: Checkout sources
        uses: actions/checkout@v2

      # Install nightly toolchain
      - name: Install nightly toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: nightly
          override: true
          components: llvm-tools-preview

      # Build the binary
      - name: Build binary
        uses: actions-rs/cargo@v1
        with:
          command: build
          args: --all-features
        env:
          RUSTFLAGS: "-Zinstrument-coverage"

      # Runs the units tests in Debug mode
      - name: Execute tests
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --all-features
        env:
          RUSTFLAGS: "-Zinstrument-coverage"
          LLVM_PROFILE_FILE: "your_name-%p-%m.profraw"
          RUST_LOG: "ed448_rust"

      - name: Install grcov
        run: curl -L https://github.com/mozilla/grcov/releases/latest/download/grcov-linux-x86_64.tar.bz2 | tar jxf -

      - name: Gather coverage data
        run: ./grcov $GITHUB_WORKSPACE --source-dir $GITHUB_WORKSPACE --llvm --commit-sha $GITHUB_SHA --binary-path $GITHUB_WORKSPACE/target/debug/ --output-type lcov --branch --ignore-not-existing --ignore "/*" --output-path $LCOV_DESTINATION --service-name $GITHUB_WORKFLOW
        env:
          LCOV_DESTINATION: ${{ runner.temp }}/lcov.info

      - name: Codecov upload
        uses: codecov/codecov-action@v1
        with:
          #token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos
          files: ${{ runner.temp }}/lcov.info
          name: codecov-ed448-rust # optional
          fail_ci_if_error: true # optional (default = false)

  build:
    strategy:
      matrix:
        os:
          - ubuntu-latest
          - macos-latest
          - windows-latest

    # The type of runner that the job will run on
    runs-on: ${{ matrix.os }}

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - name: Checkout sources
        uses: actions/checkout@v2

      # Install stable toolchain
      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true

      # Build the project
      - name: Build the project
        uses: actions-rs/cargo@v1
        with:
          command: build
          args: --release --all-features