aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/info/path.go
blob: 5406f56b6979a2400eee14cebcac1801f5bfbab4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package info

import (
	"log"

	"hakurei.app/check"
)

// Absolute paths to the Hakurei installation.
//
// These are set by the linker.
var hakureiPath, hsuPath string

// MustHakureiPath returns the [check.Absolute] path to hakurei.
func MustHakureiPath() *check.Absolute { return mustCheckPath(log.Fatal, "hakurei", hakureiPath) }

// MustHsuPath returns the [check.Absolute] to hsu.
func MustHsuPath() *check.Absolute { return mustCheckPath(log.Fatal, "hsu", hsuPath) }

// 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 != "" {
		if a, err := check.NewAbs(pathname); err != nil {
			fatal(err.Error())
			return nil // unreachable
		} else {
			return a
		}
	} else {
		fatal("invalid " + name + " path, this program is compiled incorrectly")
		return nil // unreachable
	}
}