aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-10-21 01:49:36 +0900
committerOphestra <cat@gensokyo.uk>2025-10-21 01:49:36 +0900
commit766dd89ffa198a315b043230f904636461c41efe (patch)
tree163290a35109da0cae36c6453fc4b56529cf4d54 /internal
parent699c19e972a3cbcc714403aedffcb5ff74386cfc (diff)
internal: clean up build strings
These names are less ambiguous and should be understandable without reading the source code. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal')
-rw-r--r--internal/comp.go17
-rw-r--r--internal/path.go20
-rw-r--r--internal/path_test.go1
-rw-r--r--internal/version.go19
4 files changed, 29 insertions, 28 deletions
diff --git a/internal/comp.go b/internal/comp.go
deleted file mode 100644
index 28ee6224..00000000
--- a/internal/comp.go
+++ /dev/null
@@ -1,17 +0,0 @@
-package internal
-
-const compPoison = "INVALIDINVALIDINVALIDINVALIDINVALID"
-
-var (
- version = compPoison
-)
-
-// checkComp validates string value set at compile time.
-func checkComp(s string) (string, bool) { return s, s != compPoison && s != "" }
-
-func Version() string {
- if v, ok := checkComp(version); ok {
- return v
- }
- return "impure"
-}
diff --git a/internal/path.go b/internal/path.go
index 888689f5..85e93eaf 100644
--- a/internal/path.go
+++ b/internal/path.go
@@ -6,20 +6,20 @@ import (
"hakurei.app/container/check"
)
-var (
- hmain = compPoison
- hsu = compPoison
-)
+// Absolute paths to the Hakurei installation.
+//
+// These are set by the linker.
+var hakureiPath, hsuPath string
-// MustHakureiPath returns the absolute path to hakurei, configured at compile time.
-func MustHakureiPath() *check.Absolute { return mustCheckPath(log.Fatal, "hakurei", hmain) }
+// MustHakureiPath returns the [check.Absolute] path to hakurei.
+func MustHakureiPath() *check.Absolute { return mustCheckPath(log.Fatal, "hakurei", hakureiPath) }
-// MustHsuPath returns the absolute path to hakurei, configured at compile time.
-func MustHsuPath() *check.Absolute { return mustCheckPath(log.Fatal, "hsu", hsu) }
+// MustHsuPath returns the [check.Absolute] to hsu.
+func MustHsuPath() *check.Absolute { return mustCheckPath(log.Fatal, "hsu", hsuPath) }
-// mustCheckPath checks a pathname against compPoison, then [container.NewAbs], calling fatal if either step fails.
+// mustCheckPath checks a pathname to not be zero, then [check.NewAbs], calling fatal if either step fails.
func mustCheckPath(fatal func(v ...any), name, pathname string) *check.Absolute {
- if pathname != compPoison && pathname != "" {
+ if pathname != "" {
if a, err := check.NewAbs(pathname); err != nil {
fatal(err.Error())
return nil // unreachable
diff --git a/internal/path_test.go b/internal/path_test.go
index 5bcdd851..f670c786 100644
--- a/internal/path_test.go
+++ b/internal/path_test.go
@@ -15,7 +15,6 @@ func TestMustCheckPath(t *testing.T) {
pathname string
wantFatal string
}{
- {"poison", compPoison, "invalid test path, this program is compiled incorrectly"},
{"zero", "", "invalid test path, this program is compiled incorrectly"},
{"not absolute", "\x00", `path "\x00" is not absolute`},
{"success", "/proc/nonexistent", ""},
diff --git a/internal/version.go b/internal/version.go
new file mode 100644
index 00000000..5c671084
--- /dev/null
+++ b/internal/version.go
@@ -0,0 +1,19 @@
+package internal
+
+// FallbackVersion is returned when a version string was not set by the linker.
+const FallbackVersion = "dirty"
+
+// buildVersion is the Hakurei tree's version string at build time.
+//
+// This is set by the linker.
+var buildVersion string
+
+// Version returns the Hakurei tree's version string.
+// It is either the value of the constant [FallbackVersion] or,
+// when possible, a release tag like "v1.0.0".
+func Version() string {
+ if buildVersion != "" {
+ return buildVersion
+ }
+ return FallbackVersion
+}