mirror of
https://github.com/metabarcoding/obitools4.git
synced 2026-04-30 12:00:39 +00:00
8c7017a99d
- Update obioptions.Version from "Release 4.4.29" to "/v/ Release v5" - Update version.txt from 4.29 → .30 (automated by Makefile)
36 lines
1.7 KiB
Markdown
36 lines
1.7 KiB
Markdown
# OBIOptions Package – Semantic Description
|
||
|
||
The `obioptions` package provides a lightweight, version-aware utility for the OBITools suite. Its core functionality is centered around exposing runtime version information in a standardized and programmatic way.
|
||
|
||
## Key Features
|
||
|
||
- **Version Exposure**:
|
||
Exposes the current version of OBITools via a simple, read-only function `VersionString()`. This allows other modules or external tools to query the package version at runtime.
|
||
|
||
- **Automated Versioning**:
|
||
The `_Version` variable is automatically populated from an external `version.txt` file during the build process (via Makefile), ensuring consistency between source metadata and compiled artifacts.
|
||
|
||
- **Patch-Level Tracking**:
|
||
The version follows semantic conventions (`MAJOR.MINOR.PATCH`), with the patch number incremented automatically on each repository push—enabling precise tracking of development iterations.
|
||
|
||
- **No Side Effects**:
|
||
The `VersionString()` function is pure: it takes no parameters and performs only a string return, making it safe for use in logging, diagnostics, or compatibility checks.
|
||
|
||
- **Documentation Ready**:
|
||
Includes inline GoDoc comments for clarity and tooling support (e.g., `go doc`), improving maintainability.
|
||
|
||
## Use Cases
|
||
|
||
- Debugging and logging (e.g., including version in error reports).
|
||
- Conditional logic based on OBITools compatibility.
|
||
- CI/CD validation (e.g., verifying deployed version matches expectations).
|
||
|
||
## Version Format
|
||
|
||
`"Release X.Y.Z"` (e.g., `"Release 4.4.29"`), where:
|
||
- `X` = Major release (breaking changes),
|
||
- `Y` = Minor release (new features, backward-compatible),
|
||
- `Z` = Patch level (incremented per push for hotfixes/bug fixes).
|
||
|
||
No external dependencies or configuration required.
|