Files
attest/version/version.go
2024-09-09 12:08:01 -05:00

40 lines
815 B
Go

package version
import (
"fmt"
"runtime/debug"
"github.com/Masterminds/semver/v3"
)
const ThisModulePath = "github.com/docker/attest"
// Get returns the version of the attest module.
// this can return nil if the version can't be determined (without an error).
func Get() (*semver.Version, error) {
var attestMod *debug.Module
bi, ok := debug.ReadBuildInfo()
if !ok {
return nil, nil
}
if bi.Main.Path == ThisModulePath {
attestMod = &bi.Main
} else {
for _, dep := range bi.Deps {
if dep.Path == ThisModulePath {
attestMod = dep
break
}
}
}
if attestMod == nil {
return nil, nil
}
attestVersion, err := semver.NewVersion(attestMod.Version)
if err != nil {
return nil, fmt.Errorf("failed to parse version %s: %w", attestMod.Version, err)
}
return attestVersion, nil
}