git2_auth 0.1.0

A small library to provide easy to use callback handler to authenticate with git2-rs
Documentation
name: CI

on:
  push:
    branches:
      - master
  pull_request:
  release:
    types: [published]

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

env:
  CARGO_TERM_COLOR: always

jobs:
  cargo-build-workspace:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
      - uses: Swatinem/rust-cache@v1
      - uses: actions-rs/cargo@v1
        name: Cargo Build Workspace
        with:
          command: build
          args: --workspace --all-features --all-targets
        env:
          RUSTFLAGS: "-D warnings"

  cargo-clippy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
      - uses: Swatinem/rust-cache@v1
      - name: Check Clippy Linter
        uses: actions-rs/cargo@v1
        with:
          command: clippy
          args: --all-features --all-targets -- -D warnings

  cargo-toml-fmt-check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
      - name: Install Cargo.toml linter
        uses: baptiste0928/cargo-install@v1
        with:
          crate: cargo-toml-lint
          version: "0.1"
      - name: Run Cargo.toml linter
        run: git ls-files | grep Cargo.toml$ | xargs --verbose -n 1 cargo-toml-lint

  cargo-fmt-check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
      - name: Check Formatting
        uses: actions-rs/cargo@v1
        with:
          command: fmt
          args: --all -- --check
  cargo-test-workspace:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: webfactory/ssh-agent@v0.7.0
        with:
          ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
      - uses: Swatinem/rust-cache@v1
      - name: Run tests
        uses: actions-rs/cargo@v1
        with:
          command: test

  cargo-unused-deps-check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          # `cargo-udeps` requires nightly to run
          toolchain: nightly
          default: true
      - uses: Swatinem/rust-cache@v1
      - name: Install cargo-udeps
        uses: actions-rs/cargo@v1
        with:
          command: install
          args: cargo-udeps
      - name: Check Unused Deps
        uses: actions-rs/cargo@v1
        with:
          command: udeps
          args: --all-targets

  publish:
    # Only do this job if publishing a release
    needs:
      [
        cargo-build-workspace,
        cargo-clippy,
        cargo-fmt-check,
        cargo-test-workspace,
        cargo-unused-deps-check,
      ]
    if: github.event_name == 'release' && github.event.action == 'published'
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

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

      - name: Publish crate
        uses: katyo/publish-crates@v1
        with:
          publish-delay: 30000
          registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }}