diff --git a/src/lib/dune b/src/lib/dune index 3cdef1b1..13a52807 100644 --- a/src/lib/dune +++ b/src/lib/dune @@ -1,3 +1,10 @@ +(rule + (target version.ml) + (deps (universe) gen_version.sh) + (action + (with-stdout-to version.ml + (run sh gen_version.sh)))) + (library (name opentelemetry) (public_name opentelemetry) diff --git a/src/lib/gen_version.sh b/src/lib/gen_version.sh new file mode 100644 index 00000000..aecb43eb --- /dev/null +++ b/src/lib/gen_version.sh @@ -0,0 +1,6 @@ +#!/bin/sh +v=$(git describe --exact-match HEAD 2>/dev/null | sed 's/^v//') +[ -z "$v" ] && v=dev +h=$(git rev-parse HEAD 2>/dev/null) +[ -z "$h" ] && h=unknown +printf 'let version = "%s"\nlet git_hash = "%s"\n' "$v" "$h" diff --git a/src/lib/opentelemetry.ml b/src/lib/opentelemetry.ml index 91dd683a..70db53f4 100644 --- a/src/lib/opentelemetry.ml +++ b/src/lib/opentelemetry.ml @@ -100,6 +100,7 @@ type key_value = Key_value.t (** {2 Global settings} *) module Globals = Globals +module Version = Version (** {2 Traces and Spans} *) diff --git a/src/lib/version.mli b/src/lib/version.mli new file mode 100644 index 00000000..8b0aba5e --- /dev/null +++ b/src/lib/version.mli @@ -0,0 +1,5 @@ +val version : string +(** Version of the library, e.g. ["0.12"]. ["dev"] if not built from a release tag. *) + +val git_hash : string +(** Full git commit hash at build time, e.g. ["b92159c1..."]. ["unknown"] if git was unavailable. *)