nu 0.84.0

A new type of shell
#
# 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
        - aarch64-pc-windows-msvc
        - x86_64-unknown-linux-gnu
        - x86_64-unknown-linux-musl
        - aarch64-unknown-linux-gnu
        - armv7-unknown-linux-gnueabihf
        - riscv64gc-unknown-linux-gnu
        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: aarch64-pc-windows-msvc
          extra: 'bin'
          os: windows-latest
          target_rustflags: ''
        - target: aarch64-pc-windows-msvc
          extra: msi
          os: windows-latest
          target_rustflags: ''
        - target: x86_64-unknown-linux-gnu
          os: ubuntu-20.04
          target_rustflags: ''
        - target: x86_64-unknown-linux-musl
          os: ubuntu-20.04
          target_rustflags: ''
        - target: aarch64-unknown-linux-gnu
          os: ubuntu-20.04
          target_rustflags: ''
        - target: armv7-unknown-linux-gnueabihf
          os: ubuntu-20.04
          target_rustflags: '--exclude=nu-cmd-dataframe'
        - target: riscv64gc-unknown-linux-gnu
          os: ubuntu-20.04
          target_rustflags: '--exclude=nu-cmd-dataframe'

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

    steps:
    - uses: actions/checkout@v3

    - name: Update Rust Toolchain Target
      run: |
        echo "targets = ['${{matrix.target}}']" >> rust-toolchain.toml

    - name: Setup Rust toolchain and cache
      uses: actions-rust-lang/setup-rust-toolchain@v1.5.0
      with:
        rustflags: ''

    - name: Setup Nushell
      uses: hustcer/setup-nu@v3
      with:
        version: 0.81.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@v0.1.13
      if: ${{ startsWith(github.ref, 'refs/tags/') }}
      with:
        draft: true
        files: ${{ steps.nu.outputs.archive }}
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}