lumesh 0.18.2

a lighting shell ⚡ bash alternative
Documentation
name: Build Rust Pre

# copied and modified from https://github.com/Aloso/colo/blob/main/.github/workflows/release.yml

# https://eugene-babichenko.github.io/blog/2020/05/09/github-actions-cross-platform-auto-releases/
# https://mateuscosta.me/rust-releases-with-github-actions

on:
  workflow_dispatch:
    inputs:
      version: # 可定义输入参数(可选)
        description: "Version to deploy"
        required: true
  push:
    tags:
      - "p[0-9]+.*"
  release:
    types: [created] # 当创建新Release时触发

jobs:
  create_release:
    name: Create release
    runs-on: ubuntu-latest
    outputs:
      upload_url: ${{ steps.create_release.outputs.upload_url }}
    steps:
      - name: Set variables
        id: vars
        run: echo "tag=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT # 确保提取的是标签

      - name: Create release
        id: create_release
        uses: softprops/action-gh-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          name: Cross Release ${{ steps.vars.outputs.tag }}
          # name: Release ${{ github.ref }}
          draft: false
          prerelease: true
          body: |
            This is a new release of lumesh. [Read the changelog here](https://codeberg.com/santo/lumesh/blob/${{ steps.vars.outputs.tag }}/CHANGELOG.md).
            - lume: an edition contains interactive repl and script parser.
            - lume-se: an swift edition only contains script parser. used to run script swiftly.
            - doc: help docs.

            If you're running on Linux, macOS or Windows, you can probably use one of the binaries below.

  build_docs:
    name: Build documentation
    needs: create_release
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Generate docs
        run: |
          mkdir -p tmp/doc
          cp CHANGELOG.md tmp/doc/
          cp README.md tmp/doc/
          cp LICENSE tmp/doc/
          cp docs/INS_README.md tmp/doc/
          cp docs/RULE.md tmp/doc/
          cp docs/install.sh tmp/install.sh

      - name: Create compressed files
        run: |
          tar -czf data.tgz -C docs/data lumesh
          tar -czvf doc.tgz -C tmp doc

      - name: Upload docs and install scripts
        uses: softprops/action-gh-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          files: |
            data.tgz
            doc.tgz
            tmp/install.sh

  build:
    needs: [create_release]
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest]
    runs-on: ${{ matrix.os }}
    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Build Release
        uses: zijiren233/cargo-cross@v1
        with:
          command: build
          targets: |
            x86_64-unknown-linux-gnu
            x86_64-unknown-linux-musl
            x86_64-apple-darwin
            x86_64-pc-windows-gnu
            aarch64-unknown-linux-gnu
            aarch64-unknown-linux-musl
          profile:
            release
            # x86_64-unknown-freebsd
            # aarch64-linux-android
            # aarch64-apple-darwin

      # - name: Upload artifacts
      #   uses: actions/upload-artifact@v3
      #   with:
      #     name: lume-${{ matrix.os }}
      #     path: target/*/release/*

      - name: print dir
        run: |
          ls target/**
          ls target/x86_64-pc-windows-gnu

      - name: Upload x86_64-unknown-linux-gnu
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ needs.create_release.outputs.upload_url }}
          asset_name: lume-x86_64-linux-gnu
          asset_path: target/x86_64-unknown-linux-gnu/release/lume
          asset_content_type: application/octet-stream

      - name: Upload x86_64-unknown-linux-musl
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ needs.create_release.outputs.upload_url }}
          asset_name: lume-x86_64-linux-musl
          asset_path: target/x86_64-unknown-linux-musl/release/lume
          asset_content_type: application/octet-stream

      # - name: Upload x86_64-unknown-freebsd
      #   uses: actions/upload-release-asset@v1
      #   env:
      #     GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      #   with:
      #     upload_url: ${{ needs.create_release.outputs.upload_url }}
      #     asset_name: lume-x86_64-freebsd
      #     asset_path: target/x86_64-unknown-freebsd/release/lume
      #     asset_content_type: application/octet-stream

      - name: Upload x86_64-apple-darwin
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ needs.create_release.outputs.upload_url }}
          asset_name: lume-x86_64-apple-darwin
          asset_path: target/x86_64-apple-darwin/release/lume
          asset_content_type: application/octet-stream

      - name: Upload x86_64-pc-windows-gnu
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ needs.create_release.outputs.upload_url }}
          asset_name: lume-x86_64-pc-windows-gnu
          asset_path: target/x86_64-pc-windows-gnu/release/lume.exe
          asset_content_type: application/octet-stream

      # aarch
      - name: Upload aarch64-unknown-linux-gnu
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ needs.create_release.outputs.upload_url }}
          asset_name: lume-aarch64-linux-gnu
          asset_path: target/aarch64-unknown-linux-gnu/release/lume
          asset_content_type: application/octet-stream

      - name: Upload aarch64-unknown-linux-musl
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ needs.create_release.outputs.upload_url }}
          asset_name: lume-aarch64-linux-musl
          asset_path: target/aarch64-unknown-linux-musl/release/lume
          asset_content_type: application/octet-stream

      # aarch-android
      # - name: Upload aarch64-linux-android
      #   uses: actions/upload-release-asset@v1
      #   env:
      #     GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      #   with:
      #     upload_url: ${{ needs.create_release.outputs.upload_url }}
      #     asset_name: lume-aarch64-linux-android
      #     asset_path: target/aarch64-linux-android/release/lume
      #     asset_content_type: application/octet-stream

      # # aarch-darwin
      # - name: Upload aarch64-apple-darwin
      #   uses: actions/upload-release-asset@v1
      #   env:
      #     GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      #   with:
      #     upload_url: ${{ needs.create_release.outputs.upload_url }}
      #     asset_name: lume-aarch64-apple-darwin
      #     asset_path: target/aarch64-apple-darwin/release/lume
      #     asset_content_type: application/octet-stream