diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1d983ba2..d29af206 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -51,6 +51,10 @@ jobs: CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: /usr/bin/aarch64-linux-gnu-gcc run: cargo build --release --locked --target ${{ matrix.target }} + - name: Build snap + if: matrix.target == 'x86_64-unknown-linux-gnu' + uses: snapcore/action-build@v1 + - name: Pack artifacts [Linux & macOS] if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest' env: @@ -78,5 +82,7 @@ jobs: if: startsWith(github.ref, 'refs/tags/') with: draft: true - files: yazi-${{ matrix.target }}.zip + files: | + yazi-${{ matrix.target }}.zip + yazi*.snap generate_release_notes: true diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml new file mode 100644 index 00000000..a1e0bcc3 --- /dev/null +++ b/snap/snapcraft.yaml @@ -0,0 +1,33 @@ +name: yazi +base: core22 +adopt-info: yazi +summary: Blazing fast terminal file manager written in Rust, based on async I/O. +description: | + Yazi is a terminal file manager written in Rust, based on non-blocking async I/O. + It aims to provide an efficient, user-friendly, and customizable file management experience. +license: MIT +grade: stable +confinement: classic + +architectures: + - amd64 + # - arm64 + +apps: + yazi: + command: yazi + environment: + PATH: $SNAP/bin:$PATH + +parts: + yazi: + plugin: rust + source: https://github.com/sxyazi/yazi.git + override-build: | + craftctl default + craftctl set version=$(git describe --tags --abbrev=0) + cargo install fd-find --root $CRAFT_PART_INSTALL + cargo install ripgrep --root $CRAFT_PART_INSTALL + cargo install zoxide --root $CRAFT_PART_INSTALL + git clone --depth 1 https://github.com/junegunn/fzf.git fzf + fzf/install --bin && mv fzf/bin/fzf $CRAFT_PART_INSTALL/bin/