diff --git a/justfile b/justfile index be1ea88..16c975a 100755 --- a/justfile +++ b/justfile @@ -13,18 +13,24 @@ export JUST_LOG := log watch +args='test': cargo watch --clear --exec '{{ args }}' +[group: "testing"] +[doc: "Run just test suite"] test: cargo test ci: lint build-book cargo test --all +# Run lint checks +[group: "code-checking"] lint: cargo clippy --all --all-targets -- --deny warnings ./bin/forbid cargo fmt --all -- --check cargo update --locked --package just +[group: "testing"] +[doc: "Run fuzz tests"] fuzz: cargo +nightly fuzz run fuzz-compiler @@ -32,33 +38,46 @@ run: cargo run # only run tests matching PATTERN +[group: "testing"] filter PATTERN: cargo test {{PATTERN}} +# Build just +[group: "developer-workflow"] build: cargo build +[group: "code-checking"] fmt: cargo fmt --all +[group: "code-checking"] shellcheck: shellcheck www/install.sh +# Generate the just manpage +[group: "documentation"] man: mkdir -p man cargo run -- --man > man/just.1 +# View the Just manpage +[group: "documentation"] view-man: man man man/just.1 # add git log messages to changelog +[group: "developer-workflow"] update-changelog: echo >> CHANGELOG.md git log --pretty='format:- %s' >> CHANGELOG.md +# Update the contributors file +[group: "developer-workflow"] update-contributors: cargo run --release --package update-contributors +[group: "code-checking"] check: fmt clippy test forbid #!/usr/bin/env bash set -euxo pipefail @@ -70,6 +89,7 @@ outdated: cargo outdated -R # publish current GitHub master branch +[group: "developer-workflow"] publish: #!/usr/bin/env bash set -euxo pipefail @@ -84,13 +104,19 @@ publish: cd ../.. rm -rf tmp/release +[group: "documentation"] +[doc: "Search for master version note subscripts in the README"] readme-version-notes: grep 'master' README.md +[group: "developer-workflow"] +[doc: "Push to GitHub"] push: check ! git branch | grep '* master' git push github +[group: "developer-workflow"] +[doc: "Create a pull request"] pr: push gh pr create --web @@ -116,6 +142,7 @@ install-dev-deps: cargo install mdbook mdbook-linkcheck # everyone's favorite animate paper clip +[group: "code-checking"] clippy: cargo clippy --all --all-targets --all-features @@ -123,16 +150,19 @@ forbid: ./bin/forbid # count non-empty lines of code +[group: "developer-workflow"] sloc: @cat src/*.rs | sed '/^\s*$/d' | wc -l replace FROM TO: sd '{{FROM}}' '{{TO}}' src/*.rs +[group: "demo-recipes"] test-quine: cargo run -- quine # make a quine, compile it, and verify it +[group: "demo-recipes"] quine: mkdir -p tmp @echo '{{quine-text}}' > tmp/gen0.c @@ -160,19 +190,24 @@ quine-text := ' } ' +[group: "documentation"] render-readme: #!/usr/bin/env ruby require 'github/markup' $rendered = GitHub::Markup.render("README.adoc", File.read("README.adoc")) File.write('tmp/README.html', $rendered) +[group: "documentation"] watch-readme: just render-readme fswatch -ro README.adoc | xargs -n1 -I{} just render-readme +# Test shell completions +[group: "testing"] test-completions: ./tests/completions/just.bash +[group: "documentation"] build-book: cargo run --package generate-book mdbook build book/en @@ -190,6 +225,7 @@ convert-integration-test test: -e 's/\.run\(\)/.run();/' # run all polyglot recipes +[group: "demo-recipes"] polyglot: _python _js _perl _sh _ruby _python: @@ -219,9 +255,11 @@ _ruby: puts "Hello from ruby!" # Print working directory, for demonstration purposes! +[group: "demo-recipes"] pwd: echo {{invocation_directory()}} +[group: "testing"] test-bash-completions: rm -rf tmp mkdir -p tmp/bin