VENV := .venv PYTHON := $(VENV)/bin/python PIP := $(VENV)/bin/pip MKDOCS := $(VENV)/bin/mkdocs CARGO_DIR := src DOC_DIR := docmd DOC_FILE := mkdocs.yml DOC_SITE := doc DOC_PORT := 8001 # ── virtualenv ──────────────────────────────────────────────────────────────── $(VENV)/bin/activate: python3 -m venv $(VENV) $(MKDOCS): $(VENV)/bin/activate $(PIP) install --quiet --upgrade pip $(PIP) install --quiet \ livereload watchdog \ mkdocs mkdocs-material \ mkdocs-mermaid2-plugin \ mkdocs-bibtex $(PIP) install --quiet --upgrade InSilicoSeq # ── obikmer binary ─────────────────────────────────────────────────────────── PROFILE_FILE := profile.pb PPROF_PORT := 8081 .PHONY: obikmer obikmer: cargo build --release --manifest-path $(CARGO_DIR)/Cargo.toml --bin obikmer .PHONY: debug debug: cargo build --manifest-path $(CARGO_DIR)/Cargo.toml --bin obikmer .PHONY: profile-build profile-build: cargo build --release --manifest-path $(CARGO_DIR)/Cargo.toml \ --bin obikmer --features obikmer/profiling .PHONY: profile-view profile-view: go tool pprof -http=127.0.0.1:$(PPROF_PORT) $(PROFILE_FILE) # ── documentation ───────────────────────────────────────────────────────────── .PHONY: doc doc: $(MKDOCS) $(MKDOCS) build -f $(DOC_FILE) .PHONY: doc-serve doc-serve: $(MKDOCS) $(MKDOCS) serve -f $(DOC_FILE) \ --dev-addr=127.0.0.1:$(DOC_PORT) \ --livereload .PHONY: clean-doc clean-doc: rm -rf $(DOC_SITE)/ .PHONY: clean clean: clean-doc rm -rf $(VENV) # ── release ─────────────────────────────────────────────────────────────────── CARGO_TOML := $(CARGO_DIR)/obikmer/Cargo.toml .PHONY: bump-version bump-version: @current=$$(grep '^version = ' $(CARGO_TOML) | head -n 1 | sed 's/version = "\(.*\)"/\1/'); \ if [ -n "$(RELEASE)" ]; then \ new_version="$(RELEASE)"; \ else \ major=$$(echo $$current | cut -d. -f1); \ minor=$$(echo $$current | cut -d. -f2); \ patch=$$(echo $$current | cut -d. -f3); \ new_patch=$$((patch + 1)); \ new_version="$$major.$$minor.$$new_patch"; \ fi; \ echo "Version: $$current -> $$new_version"; \ sed -i.bak "s/^version = \"$$current\"/version = \"$$new_version\"/" $(CARGO_TOML) && \ rm $(CARGO_TOML).bak .PHONY: release release: bump-version @jj auto-describe @jj git push --change @