Skip to content

Commit 00bf7d8

Browse files
authored
Read version from go build info (#113)
* Read version from go build info Signed-off-by: James Hamlin <[email protected]> * Don't assert specific help contents in cli test Signed-off-by: James Hamlin <[email protected]> --------- Signed-off-by: James Hamlin <[email protected]>
1 parent 7276b43 commit 00bf7d8

File tree

11 files changed

+30
-32
lines changed

11 files changed

+30
-32
lines changed

pkg/gen/gljimports/gljimports_darwin_amd64.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4004,7 +4004,6 @@ func RegisterImports(_register func(string, interface{})) {
40044004
_register("github.com/glojurelang/glojure/pkg/runtime.NewEnvironment", github_com_glojurelang_glojure_pkg_runtime.NewEnvironment)
40054005
_register("github.com/glojurelang/glojure/pkg/runtime.NewFn", github_com_glojurelang_glojure_pkg_runtime.NewFn)
40064006
_register("github.com/glojurelang/glojure/pkg/runtime.NewGenerator", github_com_glojurelang_glojure_pkg_runtime.NewGenerator)
4007-
_register("github.com/glojurelang/glojure/pkg/runtime.ParseVersion", github_com_glojurelang_glojure_pkg_runtime.ParseVersion)
40084007
_register("github.com/glojurelang/glojure/pkg/runtime.RT", github_com_glojurelang_glojure_pkg_runtime.RT)
40094008
_register("github.com/glojurelang/glojure/pkg/runtime.RTEvalError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_runtime.RTEvalError)(nil)).Elem())
40104009
_register("github.com/glojurelang/glojure/pkg/runtime.*RTEvalError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_runtime.RTEvalError)(nil)))
@@ -4022,7 +4021,7 @@ func RegisterImports(_register func(string, interface{})) {
40224021
_register("github.com/glojurelang/glojure/pkg/runtime.SymbolSpliceUnquote", github_com_glojurelang_glojure_pkg_runtime.SymbolSpliceUnquote)
40234022
_register("github.com/glojurelang/glojure/pkg/runtime.SymbolUnquote", github_com_glojurelang_glojure_pkg_runtime.SymbolUnquote)
40244023
_register("github.com/glojurelang/glojure/pkg/runtime.SymbolUserNamespace", github_com_glojurelang_glojure_pkg_runtime.SymbolUserNamespace)
4025-
_register("github.com/glojurelang/glojure/pkg/runtime.VERSION", github_com_glojurelang_glojure_pkg_runtime.VERSION)
4024+
_register("github.com/glojurelang/glojure/pkg/runtime.Version", github_com_glojurelang_glojure_pkg_runtime.Version)
40264025
_register("github.com/glojurelang/glojure/pkg/runtime.WithEnv", github_com_glojurelang_glojure_pkg_runtime.WithEnv)
40274026
_register("github.com/glojurelang/glojure/pkg/runtime.WithFilename", github_com_glojurelang_glojure_pkg_runtime.WithFilename)
40284027
_register("github.com/glojurelang/glojure/pkg/runtime.WithLoadPath", github_com_glojurelang_glojure_pkg_runtime.WithLoadPath)

pkg/gen/gljimports/gljimports_darwin_arm64.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4004,7 +4004,6 @@ func RegisterImports(_register func(string, interface{})) {
40044004
_register("github.com/glojurelang/glojure/pkg/runtime.NewEnvironment", github_com_glojurelang_glojure_pkg_runtime.NewEnvironment)
40054005
_register("github.com/glojurelang/glojure/pkg/runtime.NewFn", github_com_glojurelang_glojure_pkg_runtime.NewFn)
40064006
_register("github.com/glojurelang/glojure/pkg/runtime.NewGenerator", github_com_glojurelang_glojure_pkg_runtime.NewGenerator)
4007-
_register("github.com/glojurelang/glojure/pkg/runtime.ParseVersion", github_com_glojurelang_glojure_pkg_runtime.ParseVersion)
40084007
_register("github.com/glojurelang/glojure/pkg/runtime.RT", github_com_glojurelang_glojure_pkg_runtime.RT)
40094008
_register("github.com/glojurelang/glojure/pkg/runtime.RTEvalError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_runtime.RTEvalError)(nil)).Elem())
40104009
_register("github.com/glojurelang/glojure/pkg/runtime.*RTEvalError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_runtime.RTEvalError)(nil)))
@@ -4022,7 +4021,7 @@ func RegisterImports(_register func(string, interface{})) {
40224021
_register("github.com/glojurelang/glojure/pkg/runtime.SymbolSpliceUnquote", github_com_glojurelang_glojure_pkg_runtime.SymbolSpliceUnquote)
40234022
_register("github.com/glojurelang/glojure/pkg/runtime.SymbolUnquote", github_com_glojurelang_glojure_pkg_runtime.SymbolUnquote)
40244023
_register("github.com/glojurelang/glojure/pkg/runtime.SymbolUserNamespace", github_com_glojurelang_glojure_pkg_runtime.SymbolUserNamespace)
4025-
_register("github.com/glojurelang/glojure/pkg/runtime.VERSION", github_com_glojurelang_glojure_pkg_runtime.VERSION)
4024+
_register("github.com/glojurelang/glojure/pkg/runtime.Version", github_com_glojurelang_glojure_pkg_runtime.Version)
40264025
_register("github.com/glojurelang/glojure/pkg/runtime.WithEnv", github_com_glojurelang_glojure_pkg_runtime.WithEnv)
40274026
_register("github.com/glojurelang/glojure/pkg/runtime.WithFilename", github_com_glojurelang_glojure_pkg_runtime.WithFilename)
40284027
_register("github.com/glojurelang/glojure/pkg/runtime.WithLoadPath", github_com_glojurelang_glojure_pkg_runtime.WithLoadPath)

pkg/gen/gljimports/gljimports_js_wasm.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4004,7 +4004,6 @@ func RegisterImports(_register func(string, interface{})) {
40044004
_register("github.com/glojurelang/glojure/pkg/runtime.NewEnvironment", github_com_glojurelang_glojure_pkg_runtime.NewEnvironment)
40054005
_register("github.com/glojurelang/glojure/pkg/runtime.NewFn", github_com_glojurelang_glojure_pkg_runtime.NewFn)
40064006
_register("github.com/glojurelang/glojure/pkg/runtime.NewGenerator", github_com_glojurelang_glojure_pkg_runtime.NewGenerator)
4007-
_register("github.com/glojurelang/glojure/pkg/runtime.ParseVersion", github_com_glojurelang_glojure_pkg_runtime.ParseVersion)
40084007
_register("github.com/glojurelang/glojure/pkg/runtime.RT", github_com_glojurelang_glojure_pkg_runtime.RT)
40094008
_register("github.com/glojurelang/glojure/pkg/runtime.RTEvalError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_runtime.RTEvalError)(nil)).Elem())
40104009
_register("github.com/glojurelang/glojure/pkg/runtime.*RTEvalError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_runtime.RTEvalError)(nil)))
@@ -4022,7 +4021,7 @@ func RegisterImports(_register func(string, interface{})) {
40224021
_register("github.com/glojurelang/glojure/pkg/runtime.SymbolSpliceUnquote", github_com_glojurelang_glojure_pkg_runtime.SymbolSpliceUnquote)
40234022
_register("github.com/glojurelang/glojure/pkg/runtime.SymbolUnquote", github_com_glojurelang_glojure_pkg_runtime.SymbolUnquote)
40244023
_register("github.com/glojurelang/glojure/pkg/runtime.SymbolUserNamespace", github_com_glojurelang_glojure_pkg_runtime.SymbolUserNamespace)
4025-
_register("github.com/glojurelang/glojure/pkg/runtime.VERSION", github_com_glojurelang_glojure_pkg_runtime.VERSION)
4024+
_register("github.com/glojurelang/glojure/pkg/runtime.Version", github_com_glojurelang_glojure_pkg_runtime.Version)
40264025
_register("github.com/glojurelang/glojure/pkg/runtime.WithEnv", github_com_glojurelang_glojure_pkg_runtime.WithEnv)
40274026
_register("github.com/glojurelang/glojure/pkg/runtime.WithFilename", github_com_glojurelang_glojure_pkg_runtime.WithFilename)
40284027
_register("github.com/glojurelang/glojure/pkg/runtime.WithLoadPath", github_com_glojurelang_glojure_pkg_runtime.WithLoadPath)

pkg/gen/gljimports/gljimports_linux_amd64.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4004,7 +4004,6 @@ func RegisterImports(_register func(string, interface{})) {
40044004
_register("github.com/glojurelang/glojure/pkg/runtime.NewEnvironment", github_com_glojurelang_glojure_pkg_runtime.NewEnvironment)
40054005
_register("github.com/glojurelang/glojure/pkg/runtime.NewFn", github_com_glojurelang_glojure_pkg_runtime.NewFn)
40064006
_register("github.com/glojurelang/glojure/pkg/runtime.NewGenerator", github_com_glojurelang_glojure_pkg_runtime.NewGenerator)
4007-
_register("github.com/glojurelang/glojure/pkg/runtime.ParseVersion", github_com_glojurelang_glojure_pkg_runtime.ParseVersion)
40084007
_register("github.com/glojurelang/glojure/pkg/runtime.RT", github_com_glojurelang_glojure_pkg_runtime.RT)
40094008
_register("github.com/glojurelang/glojure/pkg/runtime.RTEvalError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_runtime.RTEvalError)(nil)).Elem())
40104009
_register("github.com/glojurelang/glojure/pkg/runtime.*RTEvalError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_runtime.RTEvalError)(nil)))
@@ -4022,7 +4021,7 @@ func RegisterImports(_register func(string, interface{})) {
40224021
_register("github.com/glojurelang/glojure/pkg/runtime.SymbolSpliceUnquote", github_com_glojurelang_glojure_pkg_runtime.SymbolSpliceUnquote)
40234022
_register("github.com/glojurelang/glojure/pkg/runtime.SymbolUnquote", github_com_glojurelang_glojure_pkg_runtime.SymbolUnquote)
40244023
_register("github.com/glojurelang/glojure/pkg/runtime.SymbolUserNamespace", github_com_glojurelang_glojure_pkg_runtime.SymbolUserNamespace)
4025-
_register("github.com/glojurelang/glojure/pkg/runtime.VERSION", github_com_glojurelang_glojure_pkg_runtime.VERSION)
4024+
_register("github.com/glojurelang/glojure/pkg/runtime.Version", github_com_glojurelang_glojure_pkg_runtime.Version)
40264025
_register("github.com/glojurelang/glojure/pkg/runtime.WithEnv", github_com_glojurelang_glojure_pkg_runtime.WithEnv)
40274026
_register("github.com/glojurelang/glojure/pkg/runtime.WithFilename", github_com_glojurelang_glojure_pkg_runtime.WithFilename)
40284027
_register("github.com/glojurelang/glojure/pkg/runtime.WithLoadPath", github_com_glojurelang_glojure_pkg_runtime.WithLoadPath)

pkg/gen/gljimports/gljimports_linux_arm64.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4004,7 +4004,6 @@ func RegisterImports(_register func(string, interface{})) {
40044004
_register("github.com/glojurelang/glojure/pkg/runtime.NewEnvironment", github_com_glojurelang_glojure_pkg_runtime.NewEnvironment)
40054005
_register("github.com/glojurelang/glojure/pkg/runtime.NewFn", github_com_glojurelang_glojure_pkg_runtime.NewFn)
40064006
_register("github.com/glojurelang/glojure/pkg/runtime.NewGenerator", github_com_glojurelang_glojure_pkg_runtime.NewGenerator)
4007-
_register("github.com/glojurelang/glojure/pkg/runtime.ParseVersion", github_com_glojurelang_glojure_pkg_runtime.ParseVersion)
40084007
_register("github.com/glojurelang/glojure/pkg/runtime.RT", github_com_glojurelang_glojure_pkg_runtime.RT)
40094008
_register("github.com/glojurelang/glojure/pkg/runtime.RTEvalError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_runtime.RTEvalError)(nil)).Elem())
40104009
_register("github.com/glojurelang/glojure/pkg/runtime.*RTEvalError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_runtime.RTEvalError)(nil)))
@@ -4022,7 +4021,7 @@ func RegisterImports(_register func(string, interface{})) {
40224021
_register("github.com/glojurelang/glojure/pkg/runtime.SymbolSpliceUnquote", github_com_glojurelang_glojure_pkg_runtime.SymbolSpliceUnquote)
40234022
_register("github.com/glojurelang/glojure/pkg/runtime.SymbolUnquote", github_com_glojurelang_glojure_pkg_runtime.SymbolUnquote)
40244023
_register("github.com/glojurelang/glojure/pkg/runtime.SymbolUserNamespace", github_com_glojurelang_glojure_pkg_runtime.SymbolUserNamespace)
4025-
_register("github.com/glojurelang/glojure/pkg/runtime.VERSION", github_com_glojurelang_glojure_pkg_runtime.VERSION)
4024+
_register("github.com/glojurelang/glojure/pkg/runtime.Version", github_com_glojurelang_glojure_pkg_runtime.Version)
40264025
_register("github.com/glojurelang/glojure/pkg/runtime.WithEnv", github_com_glojurelang_glojure_pkg_runtime.WithEnv)
40274026
_register("github.com/glojurelang/glojure/pkg/runtime.WithFilename", github_com_glojurelang_glojure_pkg_runtime.WithFilename)
40284027
_register("github.com/glojurelang/glojure/pkg/runtime.WithLoadPath", github_com_glojurelang_glojure_pkg_runtime.WithLoadPath)

pkg/gen/gljimports/gljimports_windows_amd64.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4004,7 +4004,6 @@ func RegisterImports(_register func(string, interface{})) {
40044004
_register("github.com/glojurelang/glojure/pkg/runtime.NewEnvironment", github_com_glojurelang_glojure_pkg_runtime.NewEnvironment)
40054005
_register("github.com/glojurelang/glojure/pkg/runtime.NewFn", github_com_glojurelang_glojure_pkg_runtime.NewFn)
40064006
_register("github.com/glojurelang/glojure/pkg/runtime.NewGenerator", github_com_glojurelang_glojure_pkg_runtime.NewGenerator)
4007-
_register("github.com/glojurelang/glojure/pkg/runtime.ParseVersion", github_com_glojurelang_glojure_pkg_runtime.ParseVersion)
40084007
_register("github.com/glojurelang/glojure/pkg/runtime.RT", github_com_glojurelang_glojure_pkg_runtime.RT)
40094008
_register("github.com/glojurelang/glojure/pkg/runtime.RTEvalError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_runtime.RTEvalError)(nil)).Elem())
40104009
_register("github.com/glojurelang/glojure/pkg/runtime.*RTEvalError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_runtime.RTEvalError)(nil)))
@@ -4022,7 +4021,7 @@ func RegisterImports(_register func(string, interface{})) {
40224021
_register("github.com/glojurelang/glojure/pkg/runtime.SymbolSpliceUnquote", github_com_glojurelang_glojure_pkg_runtime.SymbolSpliceUnquote)
40234022
_register("github.com/glojurelang/glojure/pkg/runtime.SymbolUnquote", github_com_glojurelang_glojure_pkg_runtime.SymbolUnquote)
40244023
_register("github.com/glojurelang/glojure/pkg/runtime.SymbolUserNamespace", github_com_glojurelang_glojure_pkg_runtime.SymbolUserNamespace)
4025-
_register("github.com/glojurelang/glojure/pkg/runtime.VERSION", github_com_glojurelang_glojure_pkg_runtime.VERSION)
4024+
_register("github.com/glojurelang/glojure/pkg/runtime.Version", github_com_glojurelang_glojure_pkg_runtime.Version)
40264025
_register("github.com/glojurelang/glojure/pkg/runtime.WithEnv", github_com_glojurelang_glojure_pkg_runtime.WithEnv)
40274026
_register("github.com/glojurelang/glojure/pkg/runtime.WithFilename", github_com_glojurelang_glojure_pkg_runtime.WithFilename)
40284027
_register("github.com/glojurelang/glojure/pkg/runtime.WithLoadPath", github_com_glojurelang_glojure_pkg_runtime.WithLoadPath)

pkg/gen/gljimports/gljimports_windows_arm.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4004,7 +4004,6 @@ func RegisterImports(_register func(string, interface{})) {
40044004
_register("github.com/glojurelang/glojure/pkg/runtime.NewEnvironment", github_com_glojurelang_glojure_pkg_runtime.NewEnvironment)
40054005
_register("github.com/glojurelang/glojure/pkg/runtime.NewFn", github_com_glojurelang_glojure_pkg_runtime.NewFn)
40064006
_register("github.com/glojurelang/glojure/pkg/runtime.NewGenerator", github_com_glojurelang_glojure_pkg_runtime.NewGenerator)
4007-
_register("github.com/glojurelang/glojure/pkg/runtime.ParseVersion", github_com_glojurelang_glojure_pkg_runtime.ParseVersion)
40084007
_register("github.com/glojurelang/glojure/pkg/runtime.RT", github_com_glojurelang_glojure_pkg_runtime.RT)
40094008
_register("github.com/glojurelang/glojure/pkg/runtime.RTEvalError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_runtime.RTEvalError)(nil)).Elem())
40104009
_register("github.com/glojurelang/glojure/pkg/runtime.*RTEvalError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_runtime.RTEvalError)(nil)))
@@ -4022,7 +4021,7 @@ func RegisterImports(_register func(string, interface{})) {
40224021
_register("github.com/glojurelang/glojure/pkg/runtime.SymbolSpliceUnquote", github_com_glojurelang_glojure_pkg_runtime.SymbolSpliceUnquote)
40234022
_register("github.com/glojurelang/glojure/pkg/runtime.SymbolUnquote", github_com_glojurelang_glojure_pkg_runtime.SymbolUnquote)
40244023
_register("github.com/glojurelang/glojure/pkg/runtime.SymbolUserNamespace", github_com_glojurelang_glojure_pkg_runtime.SymbolUserNamespace)
4025-
_register("github.com/glojurelang/glojure/pkg/runtime.VERSION", github_com_glojurelang_glojure_pkg_runtime.VERSION)
4024+
_register("github.com/glojurelang/glojure/pkg/runtime.Version", github_com_glojurelang_glojure_pkg_runtime.Version)
40264025
_register("github.com/glojurelang/glojure/pkg/runtime.WithEnv", github_com_glojurelang_glojure_pkg_runtime.WithEnv)
40274026
_register("github.com/glojurelang/glojure/pkg/runtime.WithFilename", github_com_glojurelang_glojure_pkg_runtime.WithFilename)
40284027
_register("github.com/glojurelang/glojure/pkg/runtime.WithLoadPath", github_com_glojurelang_glojure_pkg_runtime.WithLoadPath)

pkg/gljmain/gljmain.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ Examples:
3434
glj --help # Show this help
3535

3636
For more information, visit: https://github.com/glojurelang/glojure
37-
`, runtime.VERSION)
37+
`, runtime.Version)
3838
}
3939

4040
func Main(args []string) {
@@ -43,7 +43,7 @@ func Main(args []string) {
4343
if len(args) == 0 {
4444
repl.Start()
4545
} else if args[0] == "--version" {
46-
fmt.Printf("glojure v%s\n", runtime.VERSION)
46+
fmt.Printf("glojure v%s\n", runtime.Version)
4747
return
4848
} else if args[0] == "--help" || args[0] == "-h" {
4949
printHelp()

pkg/runtime/envinit.go

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,42 @@ import (
55
"fmt"
66
"io"
77
"os"
8+
"runtime/debug"
89
"strconv"
910
"strings"
1011

1112
"github.com/glojurelang/glojure/pkg/lang"
1213
)
1314

14-
// The current version of Glojure
15-
const VERSION = "0.3.0"
15+
var (
16+
// The current version of Glojure
17+
Version = func() string {
18+
info, ok := debug.ReadBuildInfo()
19+
if !ok {
20+
return "0.0.0"
21+
}
22+
if info.Main.Version == "" || info.Main.Version == "(devel)" {
23+
return "0.0.0"
24+
}
25+
// Trim any leading "v" from the version string
26+
return strings.TrimPrefix(info.Main.Version, "v")
27+
}()
28+
)
1629

17-
// ParseVersion parses the VERSION string and returns a map with major, minor,
30+
// parseVersion parses the Version string and returns a map with major, minor,
1831
// incremental, and qualifier
19-
func ParseVersion(version string) lang.IPersistentMap {
32+
func parseVersion(version string) lang.IPersistentMap {
2033
parts := strings.Split(version, ".")
2134

2235
major, _ := strconv.Atoi(parts[0])
2336
minor, _ := strconv.Atoi(parts[1])
2437

2538
incremental := 0
26-
qualifier := interface{}(nil)
39+
var qualifier any
2740

2841
if len(parts) > 2 {
2942
// Check if the third part contains a qualifier (e.g., "0-alpha")
30-
incrementalPart := parts[2]
43+
incrementalPart := strings.Join(parts[2:], ".")
3144
if strings.Contains(incrementalPart, "-") {
3245
qualifierParts := strings.SplitN(incrementalPart, "-", 2)
3346
incremental, _ = strconv.Atoi(qualifierParts[0])
@@ -129,7 +142,7 @@ func NewEnvironment(opts ...EvalOption) lang.Environment {
129142
core := lang.FindNamespace(lang.NewSymbol("clojure.core"))
130143
versionVar := core.FindInternedVar(lang.NewSymbol("*glojure-version*"))
131144
if versionVar != nil {
132-
versionVar.BindRoot(ParseVersion(VERSION))
145+
versionVar.BindRoot(parseVersion(Version))
133146
}
134147

135148
lang.InternVar(core, lang.NewSymbol("load-file"), func(filename string) any {

pkg/stdlib/clojure/core/loader.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)