mirror of
https://github.com/metabarcoding/obitools4.git
synced 2026-04-30 12:00:39 +00:00
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.
|