rtpm 0.0.1

The official tool to simplify the management of plugins for Rtop.
Documentation
name: Generate executables and post them to release

on:
  release:
    types: [published]
  workflow_dispatch:

permissions:
  contents: write

jobs:
  generate-linux-freebsd-executables:
    name: Build & publish for ${{ matrix.target }}
    runs-on: ubuntu-20.04
    strategy:
      matrix:
        rust:
          - stable
        target:
          - x86_64-unknown-freebsd
          - i686-unknown-freebsd
          - aarch64-unknown-linux-gnu
          - arm-unknown-linux-gnueabi
          - armv7-unknown-linux-gnueabi
          - armv7-unknown-linux-gnueabihf
          - i586-unknown-linux-gnu
          - i686-unknown-linux-gnu
          - mips-unknown-linux-gnu
          - mips64-unknown-linux-gnuabi64
          - mips64el-unknown-linux-gnuabi64
          - mipsel-unknown-linux-gnu
          - powerpc-unknown-linux-gnu
          - powerpc64-unknown-linux-gnu
          - powerpc64le-unknown-linux-gnu
          - x86_64-unknown-linux-gnu
          - x86_64-unknown-linux-musl
          - i686-unknown-linux-musl

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Install Rust
        run: rustup update ${{ matrix.rust }} && rustup default ${{ matrix.rust }}

      - name: Install cross-compilation tools
        uses: Asthowen/setup-cross-toolchain-action@main
        with:
          target: ${{ matrix.target }}
        if: matrix.target != 'i686-unknown-linux-musl' && matrix.target != 'x86_64-unknown-linux-musl'

      - name: Installing dependencies for i686-unknown-linux-musl & x86_64-unknown-linux-musl
        run: sudo apt update && sudo apt install musl-dev musl-tools -y
        if: matrix.target == 'i686-unknown-linux-musl' || matrix.target == 'x86_64-unknown-linux-musl'

      - name: Install toolchain for i686-unknown-linux-musl & x86_64-unknown-linux-musl
        uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: stable
          targets: ${{ matrix.target }}
        if: matrix.target == 'i686-unknown-linux-musl' || matrix.target == 'x86_64-unknown-linux-musl'

      - name: Set up cargo cache
        uses: actions/cache@v3
        continue-on-error: false
        with:
          path: |
            ~/.cargo/bin/
            ~/.cargo/registry/index/
            ~/.cargo/registry/cache/
            ~/.cargo/git/db/
            target/
          key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
          restore-keys: ${{ runner.os }}-cargo-

      - name: Get RTPM version
        id: rtpm_version
        run: echo "APP_VERSION=$(awk -F ' = ' '$1 ~ /version/ { gsub(/["]/, "", $2); printf("%s",$2) }' Cargo.toml)" >> $GITHUB_OUTPUT

      - name: Build release
        run: |
          cargo build --release --locked --target ${{ matrix.target }}
          mv ./target/${{ matrix.target }}/release/rtpm ./rtpm-${{ steps.rtpm_version.outputs.APP_VERSION }}-${{ matrix.target }}

      - name: Upload executable to release
        uses: softprops/action-gh-release@v1
        with:
          files: rtpm-${{ steps.rtpm_version.outputs.APP_VERSION }}-${{ matrix.target }}
          tag_name: ${{ steps.rtpm_version.outputs.APP_VERSION }}

  generate-macos-executables:
    name: Build & publish for ${{ matrix.name }}
    runs-on: macos-latest
    strategy:
      matrix:
        name: [x86_64-apple-darwin, aarch64-apple-darwin]
    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Install toolchain
        uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: stable
          targets: ${{ matrix.name }}

      - name: Get RtopPluginManager version
        id: rtpm_version
        run: echo "APP_VERSION=$(awk -F ' = ' '$1 ~ /version/ { gsub(/["]/, "", $2); printf("%s",$2) }' Cargo.toml)" >> $GITHUB_OUTPUT

      - name: Set up cargo cache
        uses: actions/cache@v3
        continue-on-error: false
        with:
          path: |
            ~/.cargo/bin/
            ~/.cargo/registry/index/
            ~/.cargo/registry/cache/
            ~/.cargo/git/db/
            target/
          key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
          restore-keys: ${{ runner.os }}-cargo-

      - name: Build release
        run: |
          cargo build --release --locked --target ${{ matrix.name }}
          mv ./target/${{ matrix.name }}/release/rtpm ./rtpm-${{ steps.rtpm_version.outputs.APP_VERSION }}-${{ matrix.name }}

      - name: Upload executable to release
        uses: softprops/action-gh-release@v1
        with:
          files: rtpm-${{ steps.rtpm_version.outputs.APP_VERSION }}-${{ matrix.name }}
          tag_name: ${{ steps.rtpm_version.outputs.APP_VERSION }}