-
Notifications
You must be signed in to change notification settings - Fork 514
Expand file tree
/
Copy pathMakefile
More file actions
118 lines (91 loc) · 3.62 KB
/
Copy pathMakefile
File metadata and controls
118 lines (91 loc) · 3.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
.EXPORT_ALL_VARIABLES:
build:
cargo build --all-targets --all-features --workspace
check-fmt:
cargo fmt --all -- --check
check-clippy:
cargo clippy --all-targets --all-features --workspace -- -D warnings
# Keep version in sync with the CI lint install step in .github/workflows/ci.yml.
install-cargo-machete:
cargo install --locked cargo-machete@0.7.0
cargo-machete: install-cargo-machete
cargo machete
install-cargo-nextest:
cargo install --locked cargo-nextest
nextest: install-cargo-nextest
cargo nextest run --all-targets --all-features --workspace
# Keep version in sync with the CI lint install step in .github/workflows/ci.yml.
install-taplo-cli:
cargo install --locked taplo-cli@0.9.3
fix-toml: install-taplo-cli
taplo fmt
check-toml: install-taplo-cli
taplo fmt --check
NIGHTLY_VERSION := $(shell awk -F'"' '/^channel/ {print $$2}' rust-toolchain.toml)
MSRV_VERSION := $(shell awk -F'"' '/^rust-version/ {print $$2}' Cargo.toml)
check-msrv:
cargo +$(MSRV_VERSION) check --workspace
# Evaluated inside the recipes that need it rather than with $(shell) at parse
# time, so plain `make <target>` invocations don't pay a cargo metadata call.
PUBLIC_API_CRATES_CMD = cargo metadata --no-deps --format-version 1 | \
jq -r '.packages[] | select(.publish == null) | "\(.name):\(.manifest_path)"'
install-cargo-public-api:
cargo install --locked cargo-public-api@0.51.0
generate-public-api: install-cargo-public-api
@for entry in $$($(PUBLIC_API_CRATES_CMD)); do \
crate=$${entry%%:*}; \
manifest=$${entry##*:}; \
crate_dir=$$(dirname "$$manifest"); \
echo "Generating public API for $$crate..."; \
cargo public-api -p "$$crate" --all-features -ss > "$$crate_dir/public-api.txt"; \
done
check-public-api: install-cargo-public-api
@fail=0; \
for entry in $$($(PUBLIC_API_CRATES_CMD)); do \
crate=$${entry%%:*}; \
manifest=$${entry##*:}; \
crate_dir=$$(dirname "$$manifest"); \
echo "Checking public API for $$crate..."; \
cargo public-api -p "$$crate" --all-features -ss | diff - "$$crate_dir/public-api.txt" || { \
echo "ERROR: Public API for $$crate has changed. Run 'make generate-public-api' to update."; \
fail=1; \
}; \
done; \
if [ $$fail -ne 0 ]; then exit 1; fi
check: check-fmt check-clippy check-toml cargo-machete
doc-test:
cargo test --no-fail-fast --doc --all-features --workspace
unit-test: doc-test
cargo test --no-fail-fast --lib --all-features --workspace
test: docker-up
@trap '$(MAKE) docker-down' EXIT; \
$(MAKE) nextest
clean:
cargo clean
install-mdbook:
cargo install --locked mdbook@0.4.36
site: install-mdbook
cd website && mdbook serve
# Docker targets for integration tests
docker-up:
docker compose -f dev/docker-compose.yaml up -d --build --wait
docker-down:
docker compose -f dev/docker-compose.yaml down -v --remove-orphans --timeout 0
docker-logs:
docker compose -f dev/docker-compose.yaml logs -f