Files
obikmer/Makefile
T
Eric Coissac a522c0907e
CI / build (push) Failing after 2m41s
CI / build (pull_request) Failing after 6s
feat: add CI/CD workflows, release automation, and CLI version flag
Adds Gitea Actions for continuous integration and tagged releases, including static musl binary compilation and artifact upload. Introduces a Makefile target to automate semantic version bumping and publishing. Bumps the package version to 0.1.1 and enables automatic `--version` output via Clap.
2026-06-22 10:36:40 +02:00

91 lines
2.8 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
@jj auto-describe
@jj git push --change @