#
# REF:
#   1. https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategymatrixinclude
#
name: Create Release Draft

on:
  workflow_dispatch:
  push:
    tags: ["[0-9]+.[0-9]+.[0-9]+*"]

defaults:
  run:
    shell: bash

jobs:
  all:
    name: All

    strategy:
      matrix:
        target:
        - aarch64-apple-darwin
        - x86_64-apple-darwin
        - x86_64-pc-windows-msvc
        - x86_64-unknown-linux-gnu
        - x86_64-unknown-linux-musl
        - aarch64-unknown-linux-gnu
        - armv7-unknown-linux-gnueabihf
        extra: ['bin']
        include:
        - target: aarch64-apple-darwin
          os: macos-latest
          target_rustflags: ''
        - target: x86_64-apple-darwin
          os: macos-latest
          target_rustflags: ''
        - target: x86_64-pc-windows-msvc
          extra: 'bin'
          os: windows-latest
          target_rustflags: ''
        - target: x86_64-pc-windows-msvc
          extra: msi
          os: windows-latest
          target_rustflags: ''
        - target: x86_64-unknown-linux-gnu
          os: ubuntu-latest
          target_rustflags: ''
        - target: x86_64-unknown-linux-musl
          os: ubuntu-latest
          target_rustflags: ''
        - target: aarch64-unknown-linux-gnu
          os: ubuntu-latest
          target_rustflags: ''
        - target: armv7-unknown-linux-gnueabihf
          os: ubuntu-latest
          target_rustflags: ''

    runs-on: ${{matrix.os}}

    steps:
    - uses: actions/checkout@v3.0.2

    - name: Install Rust Toolchain Components
      uses: actions-rs/toolchain@v1.0.6
      with:
        override: true
        profile: minimal
        toolchain: stable
        target: ${{ matrix.target }}

    - name: Setup Nushell
      uses: hustcer/setup-nu@v1
      with:
        version: 0.63.0
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

    - name: Release Nu Binary
      id: nu
      run: nu .github/workflows/release-pkg.nu
      env:
        OS: ${{ matrix.os }}
        REF: ${{ github.ref }}
        TARGET: ${{ matrix.target }}
        _EXTRA_: ${{ matrix.extra }}
        TARGET_RUSTFLAGS: ${{ matrix.target_rustflags }}

    # REF: https://github.com/marketplace/actions/gh-release
    - name: Publish Archive
      uses: softprops/action-gh-release@v1
      if: ${{ startsWith(github.ref, 'refs/tags/') }}
      with:
        draft: true
        files: ${{ steps.nu.outputs.archive }}
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
