ezcheck 0.1.7

An easy-to-use, lightweight, cross-platform, and high-performance tool for calculating, comparing, and verifying hash of strings and files.
Documentation
name: Build

on:
  release:
    types: [ published ]
  workflow_dispatch:

env:
  CARGO_TERM_COLOR: always
  RUST_BACKTRACE: 1

jobs:
  build:
    strategy:
      matrix:
        backend: [ "mix_backend" ]
        config:
          - { target: x86_64-unknown-linux-gnu, os: ubuntu-latest }
          - { target: x86_64-unknown-linux-musl, os: ubuntu-latest }
          - { target: aarch64-unknown-linux-gnu, os: ubuntu-latest }
          - { target: aarch64-unknown-linux-musl, os: ubuntu-latest }
          - { target: i686-unknown-linux-gnu, os: ubuntu-latest }
          - { target: loongarch64-unknown-linux-gnu, os: ubuntu-latest }
          - { target: loongarch64-unknown-linux-musl, os: ubuntu-latest }
          - { target: x86_64-pc-windows-msvc, os: windows-latest }
          - { target: x86_64-pc-windows-gnu, os: windows-latest }
          - { target: i686-pc-windows-msvc, os: windows-latest }
          - { target: i686-pc-windows-gnu, os: windows-latest }
          - { target: aarch64-pc-windows-msvc, os: windows-latest }
          - { target: aarch64-apple-darwin, os: macos-latest }
          - { target: x86_64-apple-darwin, os: macos-latest }
    
    name: ${{ matrix.config.target }}-${{ matrix.backend }}
    runs-on: ${{ matrix.config.os }}
    permissions:
      contents: write

    steps:
      - uses: actions/checkout@v4

      - if: matrix.config.os == 'macos-latest'
        run: brew install coreutils

      - name: Install mingw32
        if: matrix.config.target == 'i686-pc-windows-gnu'
        run: |
          Invoke-WebRequest -Uri https://github.com/niXman/mingw-builds-binaries/releases/download/14.2.0-rt_v12-rev1/i686-14.2.0-release-posix-dwarf-msvcrt-rt_v12-rev1.7z -OutFile mingw32.7z
          7z x mingw32.7z -oC:\mingw32
          echo "C:\mingw32\mingw32\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8

      - name: Setup Rust toolchain
        uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: stable
          target: ${{ matrix.config.target }}

      - name: Install cross
        if: matrix.config.os == 'ubuntu-latest'
        run: RUSTFLAGS="" cargo install cross --git https://github.com/cross-rs/cross

      - name: Build
        if: matrix.config.os == 'ubuntu-latest'
        run: cross build --release --no-default-features --features ${{ matrix.backend }} --target ${{ matrix.config.target }}

      - name: Build
        if: matrix.config.os != 'ubuntu-latest'
        run: cargo build --release --no-default-features --features ${{ matrix.backend }} --target ${{ matrix.config.target }}

      - if: matrix.config.os == 'windows-latest'
        run: |
          mkdir ezcheck
          cp target/${{matrix.config.target}}/release/ezcheck.exe ezcheck/

      - if: matrix.config.os != 'windows-latest'
        run: |
          mkdir ezcheck
          cp target/${{matrix.config.target}}/release/ezcheck ezcheck/

      - name: Add license and Gerenate sha256
        run: |
          cp LICENSE ezcheck/
          cd ezcheck
          sha256sum ezcheck* > sha256sum.txt
          sha256sum LICENSE >> sha256sum.txt

      - if: matrix.config.os == 'windows-latest'
        run: Compress-Archive -Path .\ezcheck\* -DestinationPath .\ezcheck-${{ matrix.config.target }}-${{ matrix.backend }}.zip

      - if: matrix.config.os != 'windows-latest'
        run: tar -czvf ezcheck-${{ matrix.config.target }}-${{ matrix.backend }}.tar.gz -C ezcheck .

      - name: Upload Artifacts
        uses: actions/upload-artifact@v4
        with:
          name: ezcheck-${{ matrix.config.target }}-${{ matrix.backend }}
          path: ezcheck/*

      - name: Upload to GitHub Release
        uses: svenstaro/upload-release-action@v2
        if: github.event_name == 'release' && matrix.config.os == 'windows-latest'
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          tag: ${{ github.ref }}
          overwrite: true
          file: ezcheck-${{ matrix.config.target }}-${{ matrix.backend }}.zip

      - name: Upload to GitHub Release
        uses: svenstaro/upload-release-action@v2
        if: github.event_name == 'release' && matrix.config.os != 'windows-latest'
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          tag: ${{ github.ref }}
          overwrite: true
          file: ezcheck-${{ matrix.config.target }}-${{ matrix.backend }}.tar.gz