mirror of
https://github.com/lune-org/lune.git
synced 2024-12-12 04:50:36 +00:00
Justfile and release workflow improvements
This commit is contained in:
parent
5f7bf6d3f2
commit
dd1db5dcab
3 changed files with 133 additions and 61 deletions
70
.github/workflows/release.yaml
vendored
70
.github/workflows/release.yaml
vendored
|
@ -10,9 +10,6 @@ defaults:
|
|||
run:
|
||||
shell: bash
|
||||
|
||||
env:
|
||||
CARGO_TARGET_DIR: output
|
||||
|
||||
jobs:
|
||||
init:
|
||||
name: Init
|
||||
|
@ -33,6 +30,7 @@ jobs:
|
|||
build:
|
||||
needs: ["init"]
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- name: Windows x86_64
|
||||
|
@ -71,6 +69,9 @@ jobs:
|
|||
with:
|
||||
targets: ${{ matrix.cargo-target }}
|
||||
|
||||
- name: Install Just
|
||||
uses: extractions/setup-just@v1
|
||||
|
||||
- name: Install build tooling (aarch64-unknown-linux-gnu)
|
||||
if: matrix.cargo-target == 'aarch64-unknown-linux-gnu'
|
||||
run: |
|
||||
|
@ -79,26 +80,12 @@ jobs:
|
|||
sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
|
||||
|
||||
- name: Build binary
|
||||
run: |
|
||||
cargo build \
|
||||
--locked --release --all-features \
|
||||
--target ${{ matrix.cargo-target }}
|
||||
run: just build --locked --release --target ${{ matrix.cargo-target }}
|
||||
|
||||
- name: Create binary archive
|
||||
run: |
|
||||
mkdir -p staging
|
||||
if [ "${{ matrix.runner-os }}" = "windows-latest" ]; then
|
||||
cp "output/${{ matrix.cargo-target }}/release/lune.exe" staging/
|
||||
cd staging
|
||||
7z a ../release.zip *
|
||||
else
|
||||
cp "output/${{ matrix.cargo-target }}/release/lune" staging/
|
||||
cd staging
|
||||
chmod +x lune
|
||||
zip ../release.zip *
|
||||
fi
|
||||
- name: Create release archive
|
||||
run: just zip-release ${{ matrix.cargo-target }}
|
||||
|
||||
- name: Upload binary artifact
|
||||
- name: Upload release artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ${{ matrix.artifact-name }}
|
||||
|
@ -109,38 +96,19 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
needs: ["init", "build"]
|
||||
steps:
|
||||
- name: Download binaries
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install Just
|
||||
uses: extractions/setup-just@v1
|
||||
|
||||
- name: Download releases
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
path: ./binaries
|
||||
path: ./releases
|
||||
|
||||
- name: Discover binaries
|
||||
run: |
|
||||
cd ./binaries
|
||||
echo ""
|
||||
echo "Binaries dir:"
|
||||
ls -lhrt
|
||||
echo ""
|
||||
echo "Searching for zipped releases..."
|
||||
for DIR in * ; do
|
||||
if [ -d "$DIR" ]; then
|
||||
cd "$DIR"
|
||||
for FILE in * ; do
|
||||
if [ ! -d "$FILE" ]; then
|
||||
if [ "$FILE" = "release.zip" ]; then
|
||||
echo "Found zipped release '$DIR'"
|
||||
mv "$FILE" "../$DIR.zip"
|
||||
rm -rf "../$DIR/"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
cd ..
|
||||
fi
|
||||
done
|
||||
echo ""
|
||||
echo "Binaries dir:"
|
||||
ls -lhrt
|
||||
cd ..
|
||||
- name: Unpack releases
|
||||
run: just unpack-releases "./releases"
|
||||
|
||||
- name: Create release
|
||||
uses: softprops/action-gh-release@v1
|
||||
|
@ -150,5 +118,5 @@ jobs:
|
|||
name: ${{ needs.init.outputs.version }}
|
||||
tag_name: v${{ needs.init.outputs.version }}
|
||||
fail_on_unmatched_files: true
|
||||
files: ./binaries/*.zip
|
||||
files: ./releases/*.zip
|
||||
draft: true
|
||||
|
|
7
.gitignore
vendored
7
.gitignore
vendored
|
@ -6,7 +6,14 @@
|
|||
# Autogenerated dirs
|
||||
|
||||
/bin
|
||||
/out
|
||||
/target
|
||||
/staging
|
||||
|
||||
/**/bin
|
||||
/**/out
|
||||
/**/target
|
||||
/**/staging
|
||||
|
||||
# Autogenerated files
|
||||
|
||||
|
|
117
.justfile
117
.justfile
|
@ -1,22 +1,119 @@
|
|||
# Run an individual test using the Lune CLI
|
||||
run-test TEST_NAME:
|
||||
cargo run -- "tests/{{TEST_NAME}}"
|
||||
EXT := if os() == "windows" { ".exe" } else { "" }
|
||||
CWD := invocation_directory()
|
||||
BIN_NAME := "lune"
|
||||
|
||||
# Default hidden recipe for listing other recipes + cwd
|
||||
[no-cd]
|
||||
[no-exit-message]
|
||||
[private]
|
||||
default:
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
printf "Current directory:\n {{CWD}}\n"
|
||||
just --list
|
||||
|
||||
# Builds the Lune CLI binary
|
||||
[no-exit-message]
|
||||
build *ARGS:
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
cargo build --bin {{BIN_NAME}} {{ARGS}}
|
||||
|
||||
# Run an individual file using the Lune CLI
|
||||
run-file FILE_NAME:
|
||||
cargo run -- "{{FILE_NAME}}"
|
||||
[no-exit-message]
|
||||
run FILE_PATH:
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
cargo run --bin {{BIN_NAME}} -- "{{FILE_PATH}}"
|
||||
|
||||
# Run tests for the Lune library
|
||||
test:
|
||||
cargo test --lib
|
||||
[no-exit-message]
|
||||
test *ARGS:
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
cargo test --lib -- {{ARGS}}
|
||||
|
||||
# Run tests for the Lune binary
|
||||
[no-exit-message]
|
||||
test-bin *ARGS:
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
cargo test --bin {{BIN_NAME}} -- {{ARGS}}
|
||||
|
||||
# Apply formatting for all Rust & Luau files
|
||||
[no-exit-message]
|
||||
fmt:
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
stylua scripts tests types \
|
||||
--glob "tests/**/*.luau" \
|
||||
--glob "!tests/roblox/rbx-test-files/**"
|
||||
cargo fmt
|
||||
|
||||
# Check formatting for all Rust & Luau files
|
||||
[no-exit-message]
|
||||
fmt-check:
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
stylua scripts --check
|
||||
stylua types --check
|
||||
stylua tests --check \
|
||||
stylua scripts tests types \
|
||||
--glob "tests/**/*.luau" \
|
||||
--glob "!tests/roblox/rbx-test-files/**"
|
||||
cargo fmt --check
|
||||
|
||||
# Zips up the built binary into a single zip file
|
||||
[no-exit-message]
|
||||
zip-release TARGET_TRIPLE:
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
rm -rf staging
|
||||
rm -rf release.zip
|
||||
mkdir -p staging
|
||||
cp "target/{{TARGET_TRIPLE}}/release/{{BIN_NAME}}{{EXT}}" staging/
|
||||
cd staging
|
||||
if [ "{{os_family()}}" = "windows" ]; then
|
||||
7z a ../release.zip *
|
||||
else
|
||||
chmod +x {{BIN_NAME}}
|
||||
zip ../release.zip *
|
||||
fi
|
||||
cd "{{CWD}}"
|
||||
rm -rf staging
|
||||
|
||||
# Used in GitHub workflow to move per-matrix release zips
|
||||
[no-exit-message]
|
||||
[private]
|
||||
unpack-releases RELEASES_DIR:
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
#
|
||||
if [ ! -d "{{RELEASES_DIR}}" ]; then
|
||||
echo "Releases directory is missing"
|
||||
exit 1
|
||||
fi
|
||||
#
|
||||
cd "{{RELEASES_DIR}}"
|
||||
echo ""
|
||||
echo "Releases dir:"
|
||||
ls -lhrt
|
||||
echo ""
|
||||
echo "Searching for zipped releases..."
|
||||
#
|
||||
for DIR in * ; do
|
||||
if [ -d "$DIR" ]; then
|
||||
cd "$DIR"
|
||||
for FILE in * ; do
|
||||
if [ ! -d "$FILE" ]; then
|
||||
if [ "$FILE" = "release.zip" ]; then
|
||||
echo "Found zipped release '$DIR'"
|
||||
mv "$FILE" "../$DIR.zip"
|
||||
rm -rf "../$DIR/"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
cd ..
|
||||
fi
|
||||
done
|
||||
#
|
||||
echo ""
|
||||
echo "Releases dir:"
|
||||
ls -lhrt
|
||||
|
|
Loading…
Reference in a new issue