-
Notifications
You must be signed in to change notification settings - Fork 10
/
Makefile
161 lines (117 loc) · 4.68 KB
/
Makefile
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
# ------------------------------------------------------------
# Setup
# ------------------------------------------------------------
PACKAGE ?= fuel-streams-publisher
DOCKER_PROFILE ?= all
RUST_NIGHTLY_VERSION ?= nightly-2024-07-28
# Define the make command
MAKE := make
.PHONY: all build clean lint fmt help setup start stop restart clean/docker start/nats stop/nats restart/nats clean/nats start/fuel-core stop/fuel-core restart/fuel-core clean/fuel-core dev-watch fmt-cargo fmt-rust fmt-markdown fmt-yaml check lint-cargo lint-rust lint-clippy lint-markdown audit audit-fix-test audit-fix test doc bench
all: build
install:
cargo fetch
check-commands:
@for cmd in $(COMMANDS); do \
if ! command -v $$cmd >/dev/null 2>&1; then \
echo >&2 "$$cmd is not installed. Please install $$cmd and try again."; \
exit 1; \
fi \
done
setup: COMMANDS=rustup npm pre-commit
setup: check-commands
./scripts/setup.sh
# ------------------------------------------------------------
# Development
# ------------------------------------------------------------
start: check-commands
docker compose --profile $(DOCKER_PROFILE) -f docker/docker-compose.yml up -d
stop: check-commands
docker compose --profile $(DOCKER_PROFILE) -f docker/docker-compose.yml down
restart: stop start
clean/docker: stop
docker compose --profile $(DOCKER_PROFILE) -f docker/docker-compose.yml down -v --rmi all --remove-orphans
start/nats stop/nats restart/nats clean/nats: DOCKER_PROFILE = nats
start/publisher stop/publisher restart/publisher clean/publisher: DOCKER_PROFILE = fuel
start/monitoring stop/monitoring restart/monitoring clean/monitoring: DOCKER_PROFILE = monitoring
start/dev stop/dev restart/dev clean/dev: DOCKER_PROFILE = dev
start/nats start/publisher start/monitoring start/dev: start
stop/nats stop/publisher stop/monitoring stop/dev: stop
restart/nats restart/publisher restart/monitoring restart/dev: restart
clean/nats clean/publisher clean/monitoring clean/dev: clean/docker
dev-watch:
cargo watch -- cargo run
# ------------------------------------------------------------
# Formatting
# ------------------------------------------------------------
fmt: fmt-cargo fmt-rust fmt-prettier fmt-markdown
fmt-cargo:
cargo sort -w
fmt-rust:
cargo +$(RUST_NIGHTLY_VERSION) fmt -- --color always
fmt-prettier:
pnpm prettier:fix
fmt-markdown:
pnpm md:fix
# ------------------------------------------------------------
# Validate code
# ------------------------------------------------------------
check:
cargo check --all-targets --all-features
lint: check lint-cargo lint-rust lint-clippy lint-prettier lint-markdown
lint-cargo:
cargo sort -w --check
lint-rust:
cargo +$(RUST_NIGHTLY_VERSION) fmt -- --check --color always
lint-clippy:
cargo clippy --workspace -- -D warnings
lint-prettier:
pnpm prettier:validate
lint-markdown:
pnpm md:lint
# ------------------------------------------------------------
# Coverage
# ------------------------------------------------------------
coverage:
RUSTFLAGS="-Z threads=8" cargo +$(RUST_NIGHTLY_VERSION) tarpaulin --config ./tarpaulin.toml
# ------------------------------------------------------------
# Audit crates
# ------------------------------------------------------------
audit:
cargo audit
audit-fix-test:
cargo audit fix --dry-run
audit-fix:
cargo audit fix
# ------------------------------------------------------------
# Build, Test, and Documentation
# ------------------------------------------------------------
build:
cargo build --package $(PACKAGE)
test:
cargo nextest run --workspace --color always --locked
doc:
cargo doc --no-deps
# ------------------------------------------------------------
# Benchmarking
# ------------------------------------------------------------
bench:
cargo bench -p data-parser -p nats-publisher -p bench-consumers
# ------------------------------------------------------------
# Help
# ------------------------------------------------------------
help:
@echo "Available commands:"
@echo " install - Install project dependencies"
@echo " setup - Run the setup script"
@echo " start - Start Docker containers"
@echo " stop - Stop Docker containers"
@echo " restart - Restart Docker containers"
@echo " dev-watch - Run the project in development mode with auto-reload"
@echo " build - Build the project"
@echo " clean - Clean Docker containers and images"
@echo " fmt - Format the code, Markdown, and YAML files"
@echo " lint - Perform linting checks on the code and Markdown files"
@echo " audit - Perform audit checks on Rust crates"
@echo " test - Run tests"
@echo " doc - Generate documentation"
@echo " bench - Run benchmarks"