c0a71a2d49
Bumps the obikmer crate version from 0.1.4 to 1.1.6 in Cargo.toml and Cargo.lock. Updates the Makefile release target to automatically extract the version, create a Git tag, and push it to the remote repository, extending the existing workflow with standard Git publishing steps.
95 lines
3.0 KiB
Makefile
95 lines
3.0 KiB
Makefile
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
|
|
@new_version=$$(grep '^version = ' $(CARGO_TOML) | head -n 1 | sed 's/version = "\(.*\)"/\1/'); \
|
|
git tag "v$$new_version"
|
|
@jj auto-describe
|
|
@jj git push --change @
|
|
@new_version=$$(grep '^version = ' $(CARGO_TOML) | head -n 1 | sed 's/version = "\(.*\)"/\1/'); \
|
|
git push origin "v$$new_version"
|