uuidtools 0.1.2

Simple cli tool for generating uuids
Documentation
name: Publish to release

on:
  release:
    types: [created]

permissions:
  contents: write

jobs:
  build:
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
    env:
      BINARY: uuidtools
      OUT_PACKAGE: uuidtools-${{ github.ref_name }}
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v3
      - name: Setup Rust
        uses: dtolnay/rust-toolchain@stable
      - name: Install dependencies (Linux)
        if: matrix.os == 'ubuntu-latest'
        run: |
          sudo dpkg --add-architecture i386
          sudo apt-get update
          sudo apt-get install musl-tools musl-dev libc6-dev:i386 libgcc-11-dev:i386 gcc-multilib
          cargo install cargo-deb
      - name: Add Rust targets
        run: |
          rustup target add i686-unknown-linux-gnu
          rustup target add x86_64-unknown-linux-gnu
          rustup target add x86_64-unknown-linux-musl
          rustup target add i686-unknown-linux-musl
          rustup target add x86_64-pc-windows-gnu
          rustup target add x86_64-pc-windows-msvc
      - name: Build (x86_64, Windows & Linux, Gnu)
        run: cargo build --release --target ${{ matrix.os == 'windows-latest' && 'x86_64-pc-windows-gnu' || 'x86_64-unknown-linux-gnu' }}
      - name: Build (i686, Linux, Gnu)
        if: matrix.os == 'ubuntu-latest'
        run: cargo build --release --target i686-unknown-linux-gnu
      - name: Build (x86_64, Linux, Musl)
        if: matrix.os == 'ubuntu-latest'
        run: cargo build --release --target x86_64-unknown-linux-musl
      - name: Build (i686, Linux, Musl)
        if: matrix.os == 'ubuntu-latest'
        run: cargo build --release --target i686-unknown-linux-musl
      - name: Build (x86_64, Windows, Msvc)
        if: matrix.os == 'windows-latest'
        run: cargo build --release --target x86_64-pc-windows-msvc
      - name: Make debian x86_64 package
        if: matrix.os == 'ubuntu-latest'
        run: cargo deb --target x86_64-unknown-linux-gnu
      - name: Make debian i686 package
        if: matrix.os == 'ubuntu-latest'
        run: cargo deb --target i686-unknown-linux-gnu
      - name: Package (linux)
        if: matrix.os == 'ubuntu-latest'
        run: |
          tar -czvf target/$OUT_PACKAGE-x86_64-unknown-linux-gnu.tar.gz --directory=target/x86_64-unknown-linux-gnu/release $BINARY
          tar -czvf target/$OUT_PACKAGE-i686-unknown-linux-gnu.tar.gz --directory=target/i686-unknown-linux-gnu/release $BINARY
          tar -czvf target/$OUT_PACKAGE-x86_64-unknown-linux-musl.tar.gz --directory=target/x86_64-unknown-linux-musl/release $BINARY
          tar -czvf target/$OUT_PACKAGE-i686-unknown-linux-musl.tar.gz --directory=target/i686-unknown-linux-musl/release $BINARY
          ls target
      - name: Package (windows)
        if: matrix.os == 'windows-latest'
        run: |
          tar -czvf target/${env:OUT_PACKAGE}-x86_64-pc-windows-gnu.tar.gz --directory=target/x86_64-pc-windows-gnu/release "${env:BINARY}.exe"
          tar -czvf target/${env:OUT_PACKAGE}-x86_64-pc-windows-msvc.tar.gz --directory=target/x86_64-pc-windows-msvc/release "${env:BINARY}.exe"
      - name: Upload linux x86_64 gnu artifacts
        if: matrix.os == 'ubuntu-latest'
        uses: svenstaro/upload-release-action@v2
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          tag: ${{ github.ref }}
          file: target/${{ env.OUT_PACKAGE }}-x86_64-unknown-linux-gnu.tar.gz
          make_latest: false
      - name: Upload linux x86_64 musl artifacts
        if: matrix.os == 'ubuntu-latest'
        uses: svenstaro/upload-release-action@v2
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          tag: ${{ github.ref }}
          file: target/${{ env.OUT_PACKAGE }}-x86_64-unknown-linux-musl.tar.gz
          make_latest: false
      - name: Upload linux i686 musl artifacts
        if: matrix.os == 'ubuntu-latest'
        uses: svenstaro/upload-release-action@v2
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          tag: ${{ github.ref }}
          file: target/${{ env.OUT_PACKAGE }}-i686-unknown-linux-musl.tar.gz
          make_latest: false
      - name: Upload linux i686 gnu artifacts
        if: matrix.os == 'ubuntu-latest'
        uses: svenstaro/upload-release-action@v2
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          tag: ${{ github.ref }}
          file: target/${{ env.OUT_PACKAGE }}-i686-unknown-linux-gnu.tar.gz
          make_latest: false
      - name: Upload windows x86_64 gnu artifacts
        if: matrix.os == 'windows-latest'
        uses: svenstaro/upload-release-action@v2
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          tag: ${{ github.ref }}
          file: target/${{ env.OUT_PACKAGE }}-x86_64-pc-windows-gnu.tar.gz
          make_latest: false
      - name: Upload windows x86_64 msvc artifacts
        if: matrix.os == 'windows-latest'
        uses: svenstaro/upload-release-action@v2
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          tag: ${{ github.ref }}
          file: target/${{ env.OUT_PACKAGE }}-x86_64-pc-windows-msvc.tar.gz
          make_latest: false
      - name: Upload debian x86_64 gnu artifacts
        if: matrix.os == 'ubuntu-latest'
        uses: svenstaro/upload-release-action@v2
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          tag: ${{ github.ref }}
          file: target/x86_64-unknown-linux-gnu/debian/${{ env.BINARY }}_${{ github.ref_name }}-1_amd64.deb
          make_latest: false
      - name: Upload debian i686 gnu artifacts
        if: matrix.os == 'ubuntu-latest'
        uses: svenstaro/upload-release-action@v2
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          tag: ${{ github.ref }}
          file: target/i686-unknown-linux-gnu/debian/${{ env.BINARY }}_${{ github.ref_name }}-1_i386.deb
          make_latest: false