From 3059d9d2d13c5e11be73a0d5c5b5c01a18184dc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jozef=20Steinh=C3=BCbl?= Date: Fri, 19 Jul 2024 16:26:21 +0200 Subject: [PATCH] ci: add release & actions --- .github/actions/check/action.yml | 17 +++++ .github/actions/install-rust/action.yml | 13 ++++ .github/workflows/check.yml | 16 +---- .github/workflows/release.yml | 85 +++++++++++++++++++++++++ Cargo.toml | 1 - 5 files changed, 118 insertions(+), 14 deletions(-) create mode 100644 .github/actions/check/action.yml create mode 100644 .github/actions/install-rust/action.yml create mode 100644 .github/workflows/release.yml diff --git a/.github/actions/check/action.yml b/.github/actions/check/action.yml new file mode 100644 index 0000000..29e1b98 --- /dev/null +++ b/.github/actions/check/action.yml @@ -0,0 +1,17 @@ +name: Check +description: Lints & formats + +runs: + using: composite + steps: + - name: check + shell: bash + run: cargo check --all + + - name: fmt + shell: bash + run: cargo fmt --all -- --check + + - name: clippy + shell: bash + run: cargo clippy --all -- -D warnings diff --git a/.github/actions/install-rust/action.yml b/.github/actions/install-rust/action.yml new file mode 100644 index 0000000..877bca4 --- /dev/null +++ b/.github/actions/install-rust/action.yml @@ -0,0 +1,13 @@ +name: Install rust +description: Installs the latest version of rust, rustfmt & clippy + +runs: + using: composite + steps: + - name: install rust + uses: dtolnay/rust-toolchain@stable + with: + components: rustfmt, clippy + + - name: cache dependencies + uses: Swatinem/rust-cache@v2 diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index e7e319d..8718cf0 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -5,24 +5,14 @@ on: jobs: check: + name: check runs-on: ubuntu-latest steps: - name: checkout uses: actions/checkout@v4 - name: install rust - uses: dtolnay/rust-toolchain@stable - with: - components: rustfmt, clippy - - - name: cache dependencies - uses: Swatinem/rust-cache@v2 + uses: ./github/actions/install-rust - name: check - run: cargo check --all - - - name: fmt - run: cargo fmt --all -- --check - - - name: clippy - run: cargo clippy --all -- -D warnings + uses: ./github/actions/check diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..27dee96 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,85 @@ +name: Release +on: + workflow_dispatch: + +jobs: + check: + name: check + runs-on: ubuntu-latest + steps: + - name: checkout + uses: actions/checkout@v4 + + - name: install rust + uses: ./github/actions/install-rust + + - name: check + uses: ./github/actions/check + + compile: + name: compile ${{ matrix.target }} + runs-on: ${{ matrix.runs-on && matrix.runs-on || 'ubuntu-latest' }} + needs: check + strategy: + matrix: + include: + - target: x86_64-unknown-linux-gnu + runner: ubuntu-latest + archive: tar.gz + + - target: aarch64-unknown-linux-gnu + runner: ubuntu-latest + archive: tar.gz + + - target: x86_64-apple-darwin + runner: macos-latest + archive: tar.gz + - target: aarch64-apple-darwin + runner: macos-latest + archive: tar.gz + + - target: x86_64-pc-windows-msvc + runner: windows-latest + archive: zip + steps: + - name: checkout + uses: actions/checkout@v4 + + - name: build binary + run: cargo build -p discord-presence-lsp --verbose --locked --release --target ${{ matrix.target }} + + - name: prepare for upload + id: vars + run: | + BIN_SUFFIX="" + if [[ "${{ matrix.runner }}" == "windows-latest" ]]; then + BIN_SUFFIX=".exe" + fi + + BIN_OUTPUT="target/${{ matrix.target }}/release/discord-presence-lsp${BIN_SUFFIX}" + ARCHIVE_NAME="discord-presence-lsp-${{ matrix.target }}" + + mkdir tmp/ + mkdir "tmp/${ARCHIVE_NAME}" + + mv "${BIN_OUTPUT}" "tmp/${ARCHIVE_NAME}" + cp LICENSE "tmp/${ARCHIVE_NAME}" + cp lsp/README.md "tmp/${ARCHIVE_NAME}" + + if [[ "${{ matrix.archive }}" == "tar.gz" ]]; then + ARCHIVE_PATH="tmp/${ARCHIVE_NAME}.tar.gz" + tar -czvf "${ARCHIVE_PATH}" -C "tmp/${ARCHIVE_NAME}" + else + ARCHIVE_PATH="tmp/${ARCHIVE_NAME}.zip" + zip -r "${ARCHIVE_PATH}" -C "tmp/${ARCHIVE_NAME}" + fi + + echo "archive_name=${ARCHIVE_NAME}" + echo "archive_path=${ARCHIVE_PATH}" >> $GITHUB_OUTPUT + + - name: upload artifact + uses: actions/upload-artifact@v3 + with: + name: ${{ steps.vars.outputs.archive_name }} + path: | + ${{ steps.vars.outputs.archive_path }} diff --git a/Cargo.toml b/Cargo.toml index 6f3513b..cad3d0e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,6 @@ name = "zed-discord-presence" version = "0.1.0" edition = "2021" -license = "GNU General Public License v3.0" license-file = "LICENSE" repository = "https://git.sr.ht/~hyro/zed-discord-presence"