mirror of
https://github.com/gonum/gonum.git
synced 2025-09-27 03:26:04 +08:00
gonum: add Version query function
This commit is contained in:
12
doc.go
Normal file
12
doc.go
Normal file
@@ -0,0 +1,12 @@
|
||||
// Copyright ©2019 The Gonum Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// Gonum is a set of packages designed to make writing numerical and
|
||||
// scientific algorithms productive, performant, and scalable.
|
||||
//
|
||||
// Gonum contains libraries for matrices and linear algebra; statistics,
|
||||
// probability distributions, and sampling; tools for function
|
||||
// differentiation, integration, and optimization; network creation and
|
||||
// analysis; and more.
|
||||
package gonum // import "gonum.org/v1/gonum"
|
48
version.go
Normal file
48
version.go
Normal file
@@ -0,0 +1,48 @@
|
||||
// Copyright ©2019 The Gonum Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build go1.12
|
||||
|
||||
package gonum
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"runtime/debug"
|
||||
)
|
||||
|
||||
const root = "gonum.org/v1/gonum"
|
||||
|
||||
// Version returns the version of Gonum and its checksum. The returned
|
||||
// values are only valid in binaries built with module support.
|
||||
//
|
||||
// If a replace directive exists in the Gonum go.mod, the replace will
|
||||
// be reported in the version in the following format:
|
||||
// "version=>[replace-path] [replace-version]"
|
||||
// and the replace sum will be returned in place of the original sum.
|
||||
//
|
||||
// The exact version format returned by Version may change in future.
|
||||
func Version() (version, sum string) {
|
||||
b, ok := debug.ReadBuildInfo()
|
||||
if !ok {
|
||||
return "", ""
|
||||
}
|
||||
for _, m := range b.Deps {
|
||||
if m.Path == root {
|
||||
if m.Replace != nil {
|
||||
switch {
|
||||
case m.Replace.Version != "" && m.Replace.Path != "":
|
||||
return fmt.Sprintf("%s=>%s %s", m.Version, m.Replace.Path, m.Replace.Version), m.Replace.Sum
|
||||
case m.Replace.Version != "":
|
||||
return fmt.Sprintf("%s=>%s", m.Version, m.Replace.Version), m.Replace.Sum
|
||||
case m.Replace.Path != "":
|
||||
return fmt.Sprintf("%s=>%s", m.Version, m.Replace.Path), m.Replace.Sum
|
||||
default:
|
||||
return m.Version + "*", m.Sum + "*"
|
||||
}
|
||||
}
|
||||
return m.Version, m.Sum
|
||||
}
|
||||
}
|
||||
return "", ""
|
||||
}
|
Reference in New Issue
Block a user