rustgenpass 0.6.0

Generate a hashed password similar to SuperGenPass.
Documentation
name: Release

on:
  push:
    tags:
      - 'v*'

jobs:
  build:
    name: Release for ${{ matrix.config.os }}
    runs-on: ${{ matrix.config.os }}
    strategy:
      fail-fast: false
      matrix:
        config:
          - os: ubuntu-latest
            artifact_name: rgp
            zip_file: rustgenpass.tar.gz
            asset_name: rustgenpass-linux-$tag.tar.gz
            directory: rustgenpass-${{ github.ref_name }}
            upx:
              args: --best --lzma
              strip: true
          - os: windows-latest
            artifact_name: rgp.exe
            zip_file: rgp.zip
            asset_name: rustgenpass-windows-$tag.zip
            directory: rustgenpass-${{ github.ref_name }}
            upx:
              args: -9
              strip: false
          - os: macos-latest
            artifact_name: rgp
            zip_file: rgp.zip
            asset_name: rustgenpass-macos-$tag.zip
            directory: rustgenpass-${{ github.ref_name }}
            upx:
              args: --best
              strip: true

    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          override: true
      - uses: Swatinem/rust-cache@v2
      - uses: actions-rs/cargo@v1
        with:
          command: build
          args: --release --locked --all-targets
      - name: Compress binaries
        uses: svenstaro/upx-action@v2
        with:
          file: target/release/${{ matrix.config.artifact_name }}
          args: ${{ matrix.config.upx.args }}
          strip: ${{ matrix.config.upx.strip }}
      - name: Zip Linux release archive
        if: runner.os == 'Linux'
        run: |
          mkdir -p ${{ matrix.config.directory }}
          cp target/release/${{ matrix.config.artifact_name }} README.md LICENSE ${{ matrix.config.directory }}
          tar --remove-files -zcf ${{ matrix.config.zip_file }} ${{ matrix.config.directory }}
      - name: Zip Windows release archive
        if: runner.os == 'Windows'
        run: |
          mkdir -p ${{ matrix.config.directory }}
          cp target/release/${{ matrix.config.artifact_name }},README.md,LICENSE ${{ matrix.config.directory }}
          7z a -sdel -tzip ${{ matrix.config.zip_file }} ${{ matrix.config.directory }}
      - name: Zip MacOS release archive
        if: runner.os == 'macOS'
        run: |
          mkdir -p ${{ matrix.config.directory }}
          cp target/release/${{ matrix.config.artifact_name }} README.md LICENSE ${{ matrix.config.directory }}
          7z a -sdel -tzip ${{ matrix.config.zip_file }} ${{ matrix.config.directory }}
      - name: Upload binaries to release
        uses: svenstaro/upload-release-action@v2
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          file: ${{ matrix.config.zip_file }}
          asset_name: ${{ matrix.config.asset_name }}
          tag: ${{ github.ref }}
      - name: Remove packaged zip file after upload
        uses: JesseTG/rm@v1.0.3
        with:
          path: ${{ matrix.config.zip_file }}

  publish:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - uses: actions/checkout@v2
      - uses: Swatinem/rust-cache@v2
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          override: true
      - name: Publish release to crates.io
        uses: katyo/publish-crates@v1
        with:
          registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }}
          args: --allow-dirty
          check-repo: false
          ignore-unpublished-changes: true