# name: CD # Continuous Deployment
#
# on:
#   push:
#     tags:
#       - '[v]?[0-9]+.[0-9]+.[0-9]+'
#
# jobs:
#
# publish:
#   name: Publishing for ${{ matrix.job.os }}
#   runs-on: ${{ matrix.job.os }}
#   strategy:
#     matrix:
#       rust: [stable]
#       job:
#         - os: macos-latest
#           os-name: macos
#           target: x86_64-apple-darwin
#           architecture: x86_64
#           binary-postfix: ""
#           use-cross: false
#         - os: ubuntu-latest
#           os-name: linux
#           target: x86_64-unknown-linux-gnu
#           architecture: x86_64
#           binary-postfix: ""
#           use-cross: false
#         - os: windows-latest
#           os-name: windows
#           target: x86_64-pc-windows-msvc
#           architecture: x86_64
#           binary-postfix: ".exe"
#           use-cross: false
#         - os: ubuntu-latest
#           os-name: linux
#           target: aarch64-unknown-linux-gnu
#           architecture: arm64
#           binary-postfix: ""
#           use-cross: true
#         - os: ubuntu-latest
#           os-name: linux
#           target: i686-unknown-linux-gnu
#           architecture: i686
#           binary-postfix: ""
#           use-cross: true
#
#   steps:
#     - name: Checkout repository
#       uses: actions/checkout@v3
#     - name: Install Rust toolchain
#       uses: actions-rs/toolchain@v1
#       with:
#         toolchain: ${{ matrix.rust }}
#         profile: minimal
#         override: true
#     - uses: Swatinem/rust-cache@v1
#     - name: Cargo build
#       uses: actions-rs/cargo@v1
#       with:
#         command: build
#         use-cross: ${{ matrix.job.use-cross }}
#         toolchain: ${{ matrix.rust }}
#         args: --release --target ${{ matrix.job.target }}
#
#     - name: install strip command
#       shell: bash
#       run: |
#         if [[ ${{ matrix.job.target }} == aarch64-unknown-linux-gnu ]]; then
#             sudo apt update
#             sudo apt-get install -y binutils-aarch64-linux-gnu
#         fi
#     - name: Packaging final binary
#       shell: bash
#       run: |
#         cd target/${{ matrix.job.target }}/release
#
#         ####### reduce binary size by removing debug symbols #######
#         BINARY_NAME=music-math${{ matrix.job.binary-postfix }}
#         if [[ ${{ matrix.job.target }} == aarch64-unknown-linux-gnu ]]; then
#           GCC_PREFIX="aarch64-linux-gnu-"
#         else
#           GCC_PREFIX=""
#         fi
#         "$GCC_PREFIX"strip $BINARY_NAME
#
#         ########## create tar.gz ##########
#         RELEASE_NAME=music-math-${GITHUB_REF/refs\/tags\//}-${{ matrix.job.os-name }}-${{ matrix.job.architecture }}
#         tar czvf $RELEASE_NAME.tar.gz $BINARY_NAME
#
#         ########## create sha256 ##########
#         if [[ ${{ runner.os }} == 'Windows' ]]; then
#           certutil -hashfile $RELEASE_NAME.tar.gz sha256 | grep -E [A-Fa-f0-9]{64} > $RELEASE_NAME.sha256
#         else
#           shasum -a 256 $RELEASE_NAME.tar.gz > $RELEASE_NAME.sha256
#         fi
#     - name: Releasing assets
#       uses: softprops/action-gh-release@v1
#       with:
#         files: |
#           target/${{ matrix.job.target }}/release/music-math-*.tar.gz
#           target/${{ matrix.job.target }}/release/music-math-*.sha256
#       env:
#         GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
#
# publish-cargo:
#   name: Publishing to Cargo
#   runs-on: ubuntu-latest
#   steps:
#     - name: Checkout repository
#       uses: actions/checkout@v3
#     - uses: actions-rs/toolchain@v1
#       with:
#         toolchain: stable
#         profile: minimal
#         override: true
#     - uses: Swatinem/rust-cache@v1
#     - uses: actions-rs/cargo@v1
#       with:
#         command: publish
#         args: --token ${{ secrets.CARGO_API_KEY }}
#
