git-next/justfile

70 lines
2.1 KiB
Makefile

install-hooks:
@echo "Installing git hooks"
cargo install cc-cli
git config core.hooksPath .git-hooks
validate-dev-branch:
git rebase -i origin/main -x 'just mock-ci'
mock-ci:
cargo fmt --check
cargo hack --feature-powerset build
cargo hack --feature-powerset test
cargo hack --feature-powerset clippy
start-ngrok:
#!/usr/bin/env bash
# Uses NGROK_DOMAIN env var if available
if test -z ${NGROK_DOMAIN} ; then
ngrok http 8080
else
ngrok http --domain=${NGROK_DOMAIN} 8080
fi
start-mac-tunnel:
ssh dagon -R7777:localhost:8888
@echo "Mac Tunnel has closed"
coverage-update:
cargo tarpaulin --lib --out html
echo "Now:\n\topen tarpaulin-report.html"
coverage crate test:
cargo tarpaulin -p {{crate}} --lib --out html -- {{test}}
# cargo tarpaulin --skip-clean -p {{crate}} --lib --out html -- {{test}}
grcov-coverage:
#!/usr/bin/env bash
set -e
# an alternate coverage report
rustup component add llvm-tools-preview
export RUSTFLAGS="-Cinstrument-coverage"
cargo build
export LLVM_PROFILE_FILE="git-next-%p-%m.profraw"
cargo test
echo "Building report..."
grcov . -s . --binary-path ./target/debug/ -t html --branch --ignore-not-existing -o ./target/debug/coverage/
find . -name '*.profraw' -exec rm "{}" \;
echo "Now:\n\topen target/debug/coverage/index.html"
publish version:
#!/usr/bin/bash -e
echo "Publishing git-next v{{version}} to crates.io..."
if [ -z $(git status --short) ]; then
echo "Worktree is clean - proceeding"
else
echo "Worktree is Dirty - aborting" ; exit
fi
git checkout v{{version}}
ORDER=$(cargo publish-workspace --target-version {{version}} --crate-prefix git-next --show-order 2>/dev/null | cut -d\ -f2-)
echo "Publishing crates in order: ${ORDER}"
# INFO: Why not use publish-workspace to publish? It doesn't support when crates-io registry is replaced
for P in ${ORDER}
do
echo "Publishing ${P}..."
cargo publish --registry crates-io -p $P
echo "Done: ${P}"
echo "======================================"
done
echo "All crates published"
git checkout dev