oxibase 0.2.3

Autonomous relational database management system with MVCC, time-travel queries, and full ACID compliance
Documentation
# Makefile for local CI-like commands

.DEFAULT_GOAL := help

.PHONY: all lint test build coverage license docs docs-build lib-doc release help run-memory run-files

.PHONY: help
# [other] Display help
help:
	@./scripts/help.sh ./Makefile

# [dev] Run lint, test, and build (default target)
all: lint test build

# [dev] Check formatting and run clippy
lint:
	cargo fmt --all -- --check
	cargo clippy --all-targets --all-features -- -D warnings

# [dev] Run all tests
test:
	cargo nextest run --show-progress only

# [dev] Build in release mode
build:
	cargo build --release

# [dev] Generate coverage report (requires cargo-llvm-cov)
coverage:
	cargo llvm-cov --all-features --workspace --lcov --output-path lcov.info

# [dev] Check license headers
license:
	@missing_license=""; \
	for file in $$(find . -name "*.rs" -not -path "./target/*" -not -path "./.git/*"); do \
		if ! grep -q "Copyright.* Contributors" "$$file"; then \
			missing_license="$$missing_license\n$$file"; \
		fi; \
	done; \
	if [ -n "$$missing_license" ]; then \
		echo "Files missing license header:$$missing_license"; \
		exit 1; \
	fi

# [docs] Serve the Jekyll documentation site
docs:
	cd docs && bundle exec jekyll serve

# [docs] Build the Jekyll documentation site
docs-build:
	cd docs && bundle exec jekyll build

# [docs] Generate Rust documentation
lib-doc:
	cargo doc

# [release] Release a new version (usage: make release VERSION=1.2.3, or omit VERSION for patch bump)
release:
	@./scripts/release.sh $(VERSION)

# [run] Run oxibase with in-memory database
run: build
	./target/release/oxibase -d memory://

# [run] Run oxibase with file-based database
run-files: build
	./target/release/oxibase -d file://./examples/oxibase.db