From 0ca4ee69d3c12d9a15b064857a2f22eef5176684 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Wed, 16 Oct 2024 21:30:22 -0700 Subject: [PATCH] Add a `justfile` --- justfile | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 justfile diff --git a/justfile b/justfile new file mode 100644 index 0000000..930b951 --- /dev/null +++ b/justfile @@ -0,0 +1,74 @@ +name := 'cosmic-idle' +export APPID := 'com.system76.CosmicIdle' + +rootdir := '' +prefix := '/usr' + +base-dir := absolute_path(clean(rootdir / prefix)) + +export INSTALL_DIR := base-dir / 'share' + +cargo-target-dir := env('CARGO_TARGET_DIR', 'target') +bin-src := cargo-target-dir / 'release' / name +bin-dst := base-dir / 'bin' / name + +daemon-src := cargo-target-dir / 'release' / name + '-daemon' +daemon-dst := base-dir / 'bin' / name + '-daemon' + +# Default recipe which runs `just build-release` +default: build-release + +# Runs `cargo clean` +clean: + cargo clean + +# `cargo clean` and removes vendored dependencies +clean-dist: clean + rm -rf .cargo vendor vendor.tar + +# Compiles with debug profile +build-debug *args: + cargo build --all {{args}} + +# Compiles with release profile +build-release *args: (build-debug '--release' args) + +# Compiles release profile with vendored dependencies +build-vendored *args: vendor-extract (build-release '--frozen --offline' args) + +# Runs a clippy check +check *args: + cargo clippy --all-features {{args}} -- -W clippy::pedantic + +# Runs a clippy check with JSON message format +check-json: (check '--message-format=json') + +mock: + cargo build --release --example server + cosmic-comp {{cargo-target-dir}}/release/examples/server + +# Run with debug logs +run *args: + env RUST_LOG=debug RUST_BACKTRACE=full cargo run --release {{args}} + +install: + install -Dm0755 {{bin-src}} {{bin-dst}} + install -Dm0755 {{daemon-src}} {{daemon-dst}} + +# Uninstalls installed files +uninstall: + rm {{bin-dst}} + +# Vendor dependencies locally +vendor: + mkdir -p .cargo + cargo vendor --sync Cargo.toml \ + | head -n -1 > .cargo/config + echo 'directory = "vendor"' >> .cargo/config + tar pcf vendor.tar vendor + rm -rf vendor + +# Extracts vendored dependencies +vendor-extract: + rm -rf vendor + tar pxf vendor.tar