From ae2df2c450dd655b93a950124b6ab16e2b4d967b Mon Sep 17 00:00:00 2001 From: Ophestra Date: Thu, 25 Sep 2025 13:46:21 +0900 Subject: internal: remove sys package This package is replaced by container/stub. Remove and replace it with unexported implementation for the upcoming test suite rewrite. Signed-off-by: Ophestra --- internal/sys/interface.go | 76 ----------------------------------------------- 1 file changed, 76 deletions(-) delete mode 100644 internal/sys/interface.go (limited to 'internal/sys/interface.go') diff --git a/internal/sys/interface.go b/internal/sys/interface.go deleted file mode 100644 index f2465e62..00000000 --- a/internal/sys/interface.go +++ /dev/null @@ -1,76 +0,0 @@ -// Package sys wraps OS interaction library functions. -package sys - -import ( - "io/fs" - "log" - "os/user" - "strconv" - - "hakurei.app/container" - "hakurei.app/hst" - "hakurei.app/internal/hlog" -) - -// State provides safe interaction with operating system state. -type State interface { - // Getuid provides [os.Getuid]. - Getuid() int - // Getgid provides [os.Getgid]. - Getgid() int - // LookupEnv provides [os.LookupEnv]. - LookupEnv(key string) (string, bool) - // TempDir provides [os.TempDir]. - TempDir() string - // LookPath provides exec.LookPath. - LookPath(file string) (string, error) - // MustExecutable provides [container.MustExecutable]. - MustExecutable() string - // LookupGroup provides [user.LookupGroup]. - LookupGroup(name string) (*user.Group, error) - // ReadDir provides [os.ReadDir]. - ReadDir(name string) ([]fs.DirEntry, error) - // Stat provides [os.Stat]. - Stat(name string) (fs.FileInfo, error) - // Open provides [os.Open]. - Open(name string) (fs.File, error) - // EvalSymlinks provides filepath.EvalSymlinks. - EvalSymlinks(path string) (string, error) - // Exit provides [os.Exit]. - Exit(code int) - - Println(v ...any) - Printf(format string, v ...any) - - // Paths returns a populated [hst.Paths] struct. - Paths() hst.Paths - // Uid invokes hsu and returns target uid. - // Any errors returned by Uid is already wrapped [hlog.BaseError]. - Uid(identity int) (int, error) -} - -// MustGetUserID obtains user id from hsu by querying uid of identity 0. -func MustGetUserID(os State) int { return (MustUid(os, 0) / 10000) - 100 } - -// CopyPaths is a generic implementation of [hst.Paths]. -func CopyPaths(os State, v *hst.Paths, userid int) { - if tempDir, err := container.NewAbs(os.TempDir()); err != nil { - log.Fatalf("invalid TMPDIR: %v", err) - } else { - v.TempDir = tempDir - } - - v.SharePath = v.TempDir.Append("hakurei." + strconv.Itoa(userid)) - hlog.Verbosef("process share directory at %q", v.SharePath) - - r, _ := os.LookupEnv(xdgRuntimeDir) - if a, err := container.NewAbs(r); err != nil { - // fall back to path in share since hakurei has no hard XDG dependency - v.RunDirPath = v.SharePath.Append("run") - v.RuntimePath = v.RunDirPath.Append("compat") - } else { - v.RuntimePath = a - v.RunDirPath = v.RuntimePath.Append("hakurei") - } - hlog.Verbosef("runtime directory at %q", v.RunDirPath) -} -- cgit v1.3.1