1build:
2	cargo build --release
3
4format:
5	git ls-files | grep '\.rs$$' | xargs -P 0 rustfmt
6
7lint:
8	cargo clippy
9
10test: unit-test end-to-end-test
11
12unit-test:
13	cargo test
14
15end-to-end-test: build
16	./tests/test_raw_output_matches_git_on_full_repo_history
17	./tests/test_deprecated_options > /dev/null
18	./tests/test_navigate_less_history_file
19
20release:
21	@make -f release.Makefile release
22
23version:
24	@grep version Cargo.toml | head -n1 | sed -E 's,.*version = "([^"]+)",\1,'
25
26hash:
27	@version=$$(make version) && \
28	printf "$$version-tar.gz %s\n" $$(curl -sL https://github.com/dandavison/delta/archive/$$version.tar.gz | sha256sum -) && \
29	printf "delta-$$version-x86_64-apple-darwin.tar.gz %s\n" $$(curl -sL https://github.com/dandavison/delta/releases/download/$$version/delta-$$version-x86_64-apple-darwin.tar.gz | sha256sum -) && \
30	printf "delta-$$version-x86_64-unknown-linux-musl.tar.gz %s\n" $$(curl -sL https://github.com/dandavison/delta/releases/download/$$version/delta-$$version-x86_64-unknown-linux-musl.tar.gz | sha256sum -)
31
32BENCHMARK_INPUT_FILE = /tmp/delta-benchmark-input.gitdiff
33BENCHMARK_COMMAND = git log -p 23c292d3f25c67082a2ba315a187268be1a9b0ab
34benchmark: build
35	$(BENCHMARK_COMMAND) > $(BENCHMARK_INPUT_FILE)
36	hyperfine 'target/release/delta --no-gitconfig < $(BENCHMARK_INPUT_FILE) > /dev/null'
37
38# https://github.com/brendangregg/FlameGraph
39flamegraph: build
40	$(BENCHMARK_COMMAND) | target/release/delta > /dev/null &
41	sample delta | stackcollapse-sample | flamegraph > etc/performance/flamegraph.svg
42
43chronologer:
44	chronologer etc/performance/chronologer.yaml
45
46.PHONY: build format lint test unit-test end-to-end-test release version hash benchmark flamegraph chronologer
47