From 0e6c1a50260de141c50bb50fd3f2b2bcf9a3fe64 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Tue, 7 Oct 2025 20:06:26 +0900 Subject: container/check: move absolute pathname This allows use of absolute pathname values without importing container. Signed-off-by: Ophestra --- cmd/hakurei/command.go | 7 ++++--- cmd/hpkg/app.go | 7 ++++--- cmd/hpkg/main.go | 5 +++-- cmd/hpkg/paths.go | 19 ++++++++++--------- cmd/hpkg/with.go | 3 ++- 5 files changed, 23 insertions(+), 18 deletions(-) (limited to 'cmd') diff --git a/cmd/hakurei/command.go b/cmd/hakurei/command.go index 0c2cb53d..851e0d05 100644 --- a/cmd/hakurei/command.go +++ b/cmd/hakurei/command.go @@ -16,6 +16,7 @@ import ( "hakurei.app/command" "hakurei.app/container" + "hakurei.app/container/check" "hakurei.app/hst" "hakurei.app/internal" "hakurei.app/internal/app" @@ -107,7 +108,7 @@ func buildCommand(ctx context.Context, msg container.Msg, early *earlyHardeningE // paths are identical, resolve inner shell and program path shell := container.AbsFHSRoot.Append("bin", "sh") - if a, err := container.NewAbs(os.Getenv("SHELL")); err == nil { + if a, err := check.NewAbs(os.Getenv("SHELL")); err == nil { shell = a } progPath := shell @@ -115,7 +116,7 @@ func buildCommand(ctx context.Context, msg container.Msg, early *earlyHardeningE if p, err := exec.LookPath(args[0]); err != nil { log.Fatal(errors.Unwrap(err)) return err - } else if progPath, err = container.NewAbs(p); err != nil { + } else if progPath, err = check.NewAbs(p); err != nil { log.Fatal(err.Error()) return err } @@ -201,7 +202,7 @@ func buildCommand(ctx context.Context, msg container.Msg, early *earlyHardeningE passwdOnce.Do(passwdFunc) homeDir = passwd.HomeDir } - if a, err := container.NewAbs(homeDir); err != nil { + if a, err := check.NewAbs(homeDir); err != nil { log.Fatal(err.Error()) return err } else { diff --git a/cmd/hpkg/app.go b/cmd/hpkg/app.go index da1fd301..d0092d14 100644 --- a/cmd/hpkg/app.go +++ b/cmd/hpkg/app.go @@ -6,6 +6,7 @@ import ( "os" "hakurei.app/container" + "hakurei.app/container/check" "hakurei.app/hst" ) @@ -54,14 +55,14 @@ type appInfo struct { // store path to nixGL source NixGL string `json:"nix_gl,omitempty"` // store path to activate-and-exec script - Launcher *container.Absolute `json:"launcher"` + Launcher *check.Absolute `json:"launcher"` // store path to /run/current-system - CurrentSystem *container.Absolute `json:"current_system"` + CurrentSystem *check.Absolute `json:"current_system"` // store path to home-manager activation package ActivationPackage string `json:"activation_package"` } -func (app *appInfo) toHst(pathSet *appPathSet, pathname *container.Absolute, argv []string, flagDropShell bool) *hst.Config { +func (app *appInfo) toHst(pathSet *appPathSet, pathname *check.Absolute, argv []string, flagDropShell bool) *hst.Config { config := &hst.Config{ ID: app.ID, diff --git a/cmd/hpkg/main.go b/cmd/hpkg/main.go index 03247aac..dde0ca2b 100644 --- a/cmd/hpkg/main.go +++ b/cmd/hpkg/main.go @@ -12,6 +12,7 @@ import ( "hakurei.app/command" "hakurei.app/container" + "hakurei.app/container/check" "hakurei.app/hst" ) @@ -79,11 +80,11 @@ func main() { Extract package and set up for cleanup. */ - var workDir *container.Absolute + var workDir *check.Absolute if p, err := os.MkdirTemp("", "hpkg.*"); err != nil { log.Printf("cannot create temporary directory: %v", err) return err - } else if workDir, err = container.NewAbs(p); err != nil { + } else if workDir, err = check.NewAbs(p); err != nil { log.Printf("invalid temporary directory: %v", err) return err } diff --git a/cmd/hpkg/paths.go b/cmd/hpkg/paths.go index ee4b7e71..c1d9ae3a 100644 --- a/cmd/hpkg/paths.go +++ b/cmd/hpkg/paths.go @@ -8,18 +8,19 @@ import ( "sync/atomic" "hakurei.app/container" + "hakurei.app/container/check" "hakurei.app/hst" ) const bash = "bash" var ( - dataHome *container.Absolute + dataHome *check.Absolute ) func init() { // dataHome - if a, err := container.NewAbs(os.Getenv("HAKUREI_DATA_HOME")); err == nil { + if a, err := check.NewAbs(os.Getenv("HAKUREI_DATA_HOME")); err == nil { dataHome = a } else { dataHome = container.AbsFHSVarLib.Append("hakurei/" + strconv.Itoa(os.Getuid())) @@ -29,13 +30,13 @@ func init() { var ( pathBin = container.AbsFHSRoot.Append("bin") - pathNix = container.MustAbs("/nix/") + pathNix = check.MustAbs("/nix/") pathNixStore = pathNix.Append("store/") pathCurrentSystem = container.AbsFHSRun.Append("current-system") pathSwBin = pathCurrentSystem.Append("sw/bin/") pathShell = pathSwBin.Append(bash) - pathData = container.MustAbs("/data") + pathData = check.MustAbs("/data") pathDataData = pathData.Append("data") ) @@ -64,15 +65,15 @@ func mustRun(msg container.Msg, name string, arg ...string) { type appPathSet struct { // ${dataHome}/${id} - baseDir *container.Absolute + baseDir *check.Absolute // ${baseDir}/app - metaPath *container.Absolute + metaPath *check.Absolute // ${baseDir}/files - homeDir *container.Absolute + homeDir *check.Absolute // ${baseDir}/cache - cacheDir *container.Absolute + cacheDir *check.Absolute // ${baseDir}/cache/nix - nixPath *container.Absolute + nixPath *check.Absolute } func pathSetByApp(id string) *appPathSet { diff --git a/cmd/hpkg/with.go b/cmd/hpkg/with.go index b3ccd47a..99de04d5 100644 --- a/cmd/hpkg/with.go +++ b/cmd/hpkg/with.go @@ -6,6 +6,7 @@ import ( "strings" "hakurei.app/container" + "hakurei.app/container/check" "hakurei.app/hst" ) @@ -63,7 +64,7 @@ func withNixDaemon( func withCacheDir( ctx context.Context, msg container.Msg, - action string, command []string, workDir *container.Absolute, + action string, command []string, workDir *check.Absolute, app *appInfo, pathSet *appPathSet, dropShell bool, beforeFail func()) { mustRunAppDropShell(ctx, msg, &hst.Config{ ID: app.ID, -- cgit v1.3.1