huak 0.0.8-alpha.2

A Python package manager written in Rust inspired by Cargo.
Documentation
name: Rust CI
# This top level workflow controls the what and when of the CI pipeline for Rust components of huak

on:
  push:
    branches:
      - "master"
    paths:
      - 'src/**'
      - 'Cargo.toml'
      - '.github/workflows/ci-rust.yaml'
  pull_request:
    branches:
      - "master"
    paths:
      - 'src/**'
      - 'Cargo.toml'
      - '.github/workflows/ci-rust.yaml'

jobs:
  test_and_build:
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
    name: Test and build
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
      - uses: actions/cache@v3
        env:
          cache-name: cache-cargo
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
          key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/Cargo.lock') }}
          restore-keys: |
            ${{ runner.os }}-build-${{ env.cache-name }}-
            ${{ runner.os }}-build-
            ${{ runner.os }}-
      - name: Test
        env:
          HUAK_MUTE_COMMAND: 1
        run: |
          cargo test --all-features -- --test-threads=1
      - name: Build
        run: cargo build --release

  lint_and_fmt:
    name: Lint and check fmt
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Install Rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          override: true
          components: rustfmt, clippy

      - name: Cache Cargo
        uses: actions/cache@v3
        env:
          cache-name: cache-cargo
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
          key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/Cargo.lock') }}
          restore-keys: |
            ${{ runner.os }}-build-${{ env.cache-name }}-
            ${{ runner.os }}-build-
            ${{ runner.os }}-

      - name: Run formatting checks
        run: |
          cargo fmt --all -- --check

      - name: Run lints
        env:
          RUSTFLAGS: -C debuginfo=0
        run: |
          cargo clippy --all-features
          cargo clippy -- -D warnings

  # The 'linux' job uses the manylinux docker image to build wheels that can be used by most linux distros.
  dry-release:
    name: Build with maturin
    runs-on: ubuntu-latest
    strategy:
      matrix:
        # These are the CPU architectures...
        target: [x86_64, i686]
    steps:
      - uses: actions/checkout@v3
      - name: build wheels
        # see example at https://github.com/messense/crfs-rs/blob/main/.github/workflows/Python.yml
        uses: messense/maturin-action@v1
        with:
          target: ${{ matrix.target }}
          manylinux: auto
          args: --release --out dist --features openssl