aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/path.go
blob: fca0fdf048ce5ffa184a69c72aa7786b1918155b (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 internal

import (
	"log"

	"hakurei.app/container"
)

var (
	hmain = compPoison
	hsu   = compPoison
)

// MustHakureiPath returns the absolute path to hakurei, configured at compile time.
func MustHakureiPath() *container.Absolute { return mustCheckPath(log.Fatal, "hakurei", hmain) }

// MustHsuPath returns the absolute path to hakurei, configured at compile time.
func MustHsuPath() *container.Absolute { return mustCheckPath(log.Fatal, "hsu", hsu) }

// mustCheckPath checks a pathname against compPoison, then [container.NewAbs], calling fatal if either step fails.
func mustCheckPath(fatal func(v ...any), name, pathname string) *container.Absolute {
	if pathname != compPoison && pathname != "" {
		if a, err := container.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
	}
}