internal/outcome: rename from app
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				Test / Sandbox (race detector) (push) Successful in 4m7s
				
			
		
			
				
	
				Test / Hakurei (race detector) (push) Successful in 4m55s
				
			
		
			
				
	
				Test / Flake checks (push) Successful in 1m27s
				
			
		
			
				
	
				Test / Create distribution (push) Successful in 33s
				
			
		
			
				
	
				Test / Sandbox (push) Successful in 2m11s
				
			
		
			
				
	
				Test / Hakurei (push) Successful in 3m9s
				
			
		
			
				
	
				Test / Hpkg (push) Successful in 4m1s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	Test / Sandbox (race detector) (push) Successful in 4m7s
				
			Test / Hakurei (race detector) (push) Successful in 4m55s
				
			Test / Flake checks (push) Successful in 1m27s
				
			Test / Create distribution (push) Successful in 33s
				
			Test / Sandbox (push) Successful in 2m11s
				
			Test / Hakurei (push) Successful in 3m9s
				
			Test / Hpkg (push) Successful in 4m1s
				
			This is less ambiguous, and more accurately describes the purpose of the package. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
		
							parent
							
								
									a52f7038e5
								
							
						
					
					
						commit
						a0b4e47acc
					
				| @ -18,9 +18,9 @@ import ( | |||||||
| 	"hakurei.app/container/fhs" | 	"hakurei.app/container/fhs" | ||||||
| 	"hakurei.app/hst" | 	"hakurei.app/hst" | ||||||
| 	"hakurei.app/internal" | 	"hakurei.app/internal" | ||||||
| 	"hakurei.app/internal/app" |  | ||||||
| 	"hakurei.app/internal/app/state" |  | ||||||
| 	"hakurei.app/internal/env" | 	"hakurei.app/internal/env" | ||||||
|  | 	"hakurei.app/internal/outcome" | ||||||
|  | 	"hakurei.app/internal/state" | ||||||
| 	"hakurei.app/message" | 	"hakurei.app/message" | ||||||
| 	"hakurei.app/system/dbus" | 	"hakurei.app/system/dbus" | ||||||
| ) | ) | ||||||
| @ -51,7 +51,7 @@ func buildCommand(ctx context.Context, msg message.Msg, early *earlyHardeningErr | |||||||
| 		Flag(&flagVerbose, "v", command.BoolFlag(false), "Increase log verbosity"). | 		Flag(&flagVerbose, "v", command.BoolFlag(false), "Increase log verbosity"). | ||||||
| 		Flag(&flagJSON, "json", command.BoolFlag(false), "Serialise output in JSON when applicable") | 		Flag(&flagJSON, "json", command.BoolFlag(false), "Serialise output in JSON when applicable") | ||||||
| 
 | 
 | ||||||
| 	c.Command("shim", command.UsageInternal, func([]string) error { app.Shim(msg); return errSuccess }) | 	c.Command("shim", command.UsageInternal, func([]string) error { outcome.Shim(msg); return errSuccess }) | ||||||
| 
 | 
 | ||||||
| 	c.Command("app", "Load and start container from configuration file", func(args []string) error { | 	c.Command("app", "Load and start container from configuration file", func(args []string) error { | ||||||
| 		if len(args) < 1 { | 		if len(args) < 1 { | ||||||
| @ -64,7 +64,7 @@ func buildCommand(ctx context.Context, msg message.Msg, early *earlyHardeningErr | |||||||
| 			config.Container.Args = append(config.Container.Args, args[1:]...) | 			config.Container.Args = append(config.Container.Args, args[1:]...) | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		app.Main(ctx, msg, config) | 		outcome.Main(ctx, msg, config) | ||||||
| 		panic("unreachable") | 		panic("unreachable") | ||||||
| 	}) | 	}) | ||||||
| 
 | 
 | ||||||
| @ -96,7 +96,7 @@ func buildCommand(ctx context.Context, msg message.Msg, early *earlyHardeningErr | |||||||
| 				passwd     *user.User | 				passwd     *user.User | ||||||
| 				passwdOnce sync.Once | 				passwdOnce sync.Once | ||||||
| 				passwdFunc = func() { | 				passwdFunc = func() { | ||||||
| 					us := strconv.Itoa(app.HsuUid(new(app.Hsu).MustID(msg), flagIdentity)) | 					us := strconv.Itoa(outcome.HsuUid(new(outcome.Hsu).MustID(msg), flagIdentity)) | ||||||
| 					if u, err := user.LookupId(us); err != nil { | 					if u, err := user.LookupId(us); err != nil { | ||||||
| 						msg.Verbosef("cannot look up uid %s", us) | 						msg.Verbosef("cannot look up uid %s", us) | ||||||
| 						passwd = &user.User{ | 						passwd = &user.User{ | ||||||
| @ -258,7 +258,7 @@ func buildCommand(ctx context.Context, msg message.Msg, early *earlyHardeningErr | |||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			app.Main(ctx, msg, config) | 			outcome.Main(ctx, msg, config) | ||||||
| 			panic("unreachable") | 			panic("unreachable") | ||||||
| 		}). | 		}). | ||||||
| 			Flag(&flagDBusConfigSession, "dbus-config", command.StringFlag("builtin"), | 			Flag(&flagDBusConfigSession, "dbus-config", command.StringFlag("builtin"), | ||||||
| @ -321,7 +321,7 @@ func buildCommand(ctx context.Context, msg message.Msg, early *earlyHardeningErr | |||||||
| 		var flagShort bool | 		var flagShort bool | ||||||
| 		c.NewCommand("ps", "List active instances", func(args []string) error { | 		c.NewCommand("ps", "List active instances", func(args []string) error { | ||||||
| 			var sc hst.Paths | 			var sc hst.Paths | ||||||
| 			env.CopyPaths().Copy(&sc, new(app.Hsu).MustID(nil)) | 			env.CopyPaths().Copy(&sc, new(outcome.Hsu).MustID(nil)) | ||||||
| 			printPs(os.Stdout, time.Now().UTC(), state.NewMulti(msg, sc.RunDirPath), flagShort, flagJSON) | 			printPs(os.Stdout, time.Now().UTC(), state.NewMulti(msg, sc.RunDirPath), flagShort, flagJSON) | ||||||
| 			return errSuccess | 			return errSuccess | ||||||
| 		}).Flag(&flagShort, "short", command.BoolFlag(false), "Print instance id") | 		}).Flag(&flagShort, "short", command.BoolFlag(false), "Print instance id") | ||||||
|  | |||||||
| @ -11,9 +11,9 @@ import ( | |||||||
| 	"syscall" | 	"syscall" | ||||||
| 
 | 
 | ||||||
| 	"hakurei.app/hst" | 	"hakurei.app/hst" | ||||||
| 	"hakurei.app/internal/app" |  | ||||||
| 	"hakurei.app/internal/app/state" |  | ||||||
| 	"hakurei.app/internal/env" | 	"hakurei.app/internal/env" | ||||||
|  | 	"hakurei.app/internal/outcome" | ||||||
|  | 	"hakurei.app/internal/state" | ||||||
| 	"hakurei.app/message" | 	"hakurei.app/message" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| @ -84,7 +84,7 @@ func shortIdentifierString(s string) string { | |||||||
| func tryIdentifier(msg message.Msg, name string) (config *hst.Config, entry *hst.State) { | func tryIdentifier(msg message.Msg, name string) (config *hst.Config, entry *hst.State) { | ||||||
| 	return tryIdentifierEntries(msg, name, func() map[hst.ID]*hst.State { | 	return tryIdentifierEntries(msg, name, func() map[hst.ID]*hst.State { | ||||||
| 		var sc hst.Paths | 		var sc hst.Paths | ||||||
| 		env.CopyPaths().Copy(&sc, new(app.Hsu).MustID(nil)) | 		env.CopyPaths().Copy(&sc, new(outcome.Hsu).MustID(nil)) | ||||||
| 		s := state.NewMulti(msg, sc.RunDirPath) | 		s := state.NewMulti(msg, sc.RunDirPath) | ||||||
| 		if entries, err := state.Join(s); err != nil { | 		if entries, err := state.Join(s); err != nil { | ||||||
| 			msg.GetLogger().Printf("cannot join store: %v", err) // not fatal | 			msg.GetLogger().Printf("cannot join store: %v", err) // not fatal | ||||||
|  | |||||||
| @ -12,9 +12,9 @@ import ( | |||||||
| 
 | 
 | ||||||
| 	"hakurei.app/hst" | 	"hakurei.app/hst" | ||||||
| 	"hakurei.app/internal" | 	"hakurei.app/internal" | ||||||
| 	"hakurei.app/internal/app" |  | ||||||
| 	"hakurei.app/internal/app/state" |  | ||||||
| 	"hakurei.app/internal/env" | 	"hakurei.app/internal/env" | ||||||
|  | 	"hakurei.app/internal/outcome" | ||||||
|  | 	"hakurei.app/internal/state" | ||||||
| 	"hakurei.app/message" | 	"hakurei.app/message" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| @ -23,7 +23,7 @@ func printShowSystem(output io.Writer, short, flagJSON bool) { | |||||||
| 	t := newPrinter(output) | 	t := newPrinter(output) | ||||||
| 	defer t.MustFlush() | 	defer t.MustFlush() | ||||||
| 
 | 
 | ||||||
| 	info := &hst.Info{Version: internal.Version(), User: new(app.Hsu).MustID(nil)} | 	info := &hst.Info{Version: internal.Version(), User: new(outcome.Hsu).MustID(nil)} | ||||||
| 	env.CopyPaths().Copy(&info.Paths, info.User) | 	env.CopyPaths().Copy(&info.Paths, info.User) | ||||||
| 
 | 
 | ||||||
| 	if flagJSON { | 	if flagJSON { | ||||||
|  | |||||||
| @ -6,7 +6,7 @@ import ( | |||||||
| 	"time" | 	"time" | ||||||
| 
 | 
 | ||||||
| 	"hakurei.app/hst" | 	"hakurei.app/hst" | ||||||
| 	"hakurei.app/internal/app/state" | 	"hakurei.app/internal/state" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| var ( | var ( | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"context" | 	"context" | ||||||
| @ -1,8 +1,9 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"bytes" | 	"bytes" | ||||||
| 	"context" | 	"context" | ||||||
|  | 	"encoding/json" | ||||||
| 	"io" | 	"io" | ||||||
| 	"io/fs" | 	"io/fs" | ||||||
| 	"log" | 	"log" | ||||||
| @ -585,6 +586,23 @@ type errorReader struct{ val error } | |||||||
| 
 | 
 | ||||||
| func (r errorReader) Read([]byte) (int, error) { return -1, r.val } | func (r errorReader) Read([]byte) (int, error) { return -1, r.val } | ||||||
| 
 | 
 | ||||||
|  | // mustMarshal returns the result of [json.Marshal] as a string and panics on error. | ||||||
|  | func mustMarshal(v any) string { | ||||||
|  | 	if b, err := json.Marshal(v); err != nil { | ||||||
|  | 		panic(err.Error()) | ||||||
|  | 	} else { | ||||||
|  | 		return string(b) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // m is a shortcut for [check.MustAbs]. | ||||||
|  | func m(pathname string) *check.Absolute { return check.MustAbs(pathname) } | ||||||
|  | 
 | ||||||
|  | // f returns [hst.FilesystemConfig] wrapped in its [json] adapter. | ||||||
|  | func f(c hst.FilesystemConfig) hst.FilesystemConfigJSON { | ||||||
|  | 	return hst.FilesystemConfigJSON{FilesystemConfig: c} | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // panicMsgContext implements [message.Msg] and [context.Context] with methods wrapping panic. | // panicMsgContext implements [message.Msg] and [context.Context] with methods wrapping panic. | ||||||
| // This should be assigned to test cases to be checked against. | // This should be assigned to test cases to be checked against. | ||||||
| type panicMsgContext struct{} | type panicMsgContext struct{} | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"context" | 	"context" | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"errors" | 	"errors" | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"os" | 	"os" | ||||||
| @ -1,5 +1,4 @@ | |||||||
| // Package app implements high-level hakurei container behaviour. | package outcome | ||||||
| package app |  | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"context" | 	"context" | ||||||
| @ -1,9 +1,8 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"bytes" | 	"bytes" | ||||||
| 	"encoding/gob" | 	"encoding/gob" | ||||||
| 	"encoding/json" |  | ||||||
| 	"errors" | 	"errors" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"io" | 	"io" | ||||||
| @ -28,7 +27,7 @@ import ( | |||||||
| 	"hakurei.app/system/dbus" | 	"hakurei.app/system/dbus" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| func TestApp(t *testing.T) { | func TestOutcomeMain(t *testing.T) { | ||||||
| 	t.Parallel() | 	t.Parallel() | ||||||
| 	msg := message.NewMsg(nil) | 	msg := message.NewMsg(nil) | ||||||
| 	msg.SwapVerbose(testing.Verbose()) | 	msg.SwapVerbose(testing.Verbose()) | ||||||
| @ -653,14 +652,6 @@ func TestApp(t *testing.T) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func mustMarshal(v any) string { |  | ||||||
| 	if b, err := json.Marshal(v); err != nil { |  | ||||||
| 		panic(err.Error()) |  | ||||||
| 	} else { |  | ||||||
| 		return string(b) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func stubDirEntries(names ...string) (e []fs.DirEntry, err error) { | func stubDirEntries(names ...string) (e []fs.DirEntry, err error) { | ||||||
| 	e = make([]fs.DirEntry, len(names)) | 	e = make([]fs.DirEntry, len(names)) | ||||||
| 	for i, name := range names { | 	for i, name := range names { | ||||||
| @ -930,11 +921,3 @@ func (k *stubNixOS) fatalf(format string, v ...any) { panic(fmt.Sprintf(format, | |||||||
| func (k *stubNixOS) isVerbose() bool                  { return true } | func (k *stubNixOS) isVerbose() bool                  { return true } | ||||||
| func (k *stubNixOS) verbose(v ...any)                 { log.Print(v...) } | func (k *stubNixOS) verbose(v ...any)                 { log.Print(v...) } | ||||||
| func (k *stubNixOS) verbosef(format string, v ...any) { log.Printf(format, v...) } | func (k *stubNixOS) verbosef(format string, v ...any) { log.Printf(format, v...) } | ||||||
| 
 |  | ||||||
| func m(pathname string) *check.Absolute { |  | ||||||
| 	return check.MustAbs(pathname) |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func f(c hst.FilesystemConfig) hst.FilesystemConfigJSON { |  | ||||||
| 	return hst.FilesystemConfigJSON{FilesystemConfig: c} |  | ||||||
| } |  | ||||||
| @ -1,4 +1,5 @@ | |||||||
| package app | // Package outcome implements the outcome of the privileged and container sides of a hakurei container. | ||||||
|  | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"errors" | 	"errors" | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"testing" | 	"testing" | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"context" | 	"context" | ||||||
| @ -16,7 +16,7 @@ import ( | |||||||
| 	"hakurei.app/container/fhs" | 	"hakurei.app/container/fhs" | ||||||
| 	"hakurei.app/hst" | 	"hakurei.app/hst" | ||||||
| 	"hakurei.app/internal" | 	"hakurei.app/internal" | ||||||
| 	"hakurei.app/internal/app/state" | 	"hakurei.app/internal/state" | ||||||
| 	"hakurei.app/message" | 	"hakurei.app/message" | ||||||
| 	"hakurei.app/system" | 	"hakurei.app/system" | ||||||
| ) | ) | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"context" | 	"context" | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"bytes" | 	"bytes" | ||||||
| @ -118,7 +118,7 @@ func TestShimEntrypoint(t *testing.T) { | |||||||
| 					spTmpdirOp{}, | 					spTmpdirOp{}, | ||||||
| 					spAccountOp{}, | 					spAccountOp{}, | ||||||
| 					&spWaylandOp{}, | 					&spWaylandOp{}, | ||||||
| 					&spPulseOp{(*[256]byte)(bytes.Repeat([]byte{0}, pulseCookieSizeMax)), pulseCookieSizeMax}, | 					&spPulseOp{(*[pulseCookieSizeMax]byte)(bytes.Repeat([]byte{0}, pulseCookieSizeMax)), pulseCookieSizeMax}, | ||||||
| 					&spDBusOp{true}, | 					&spDBusOp{true}, | ||||||
| 					&spFilesystemOp{}, | 					&spFilesystemOp{}, | ||||||
| 				}}, | 				}}, | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"encoding/gob" | 	"encoding/gob" | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"os" | 	"os" | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"encoding/gob" | 	"encoding/gob" | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"errors" | 	"errors" | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"encoding/gob" | 	"encoding/gob" | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"syscall" | 	"syscall" | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"encoding/gob" | 	"encoding/gob" | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"bytes" | 	"bytes" | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"encoding/gob" | 	"encoding/gob" | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"testing" | 	"testing" | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"encoding/gob" | 	"encoding/gob" | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"testing" | 	"testing" | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"encoding/gob" | 	"encoding/gob" | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"testing" | 	"testing" | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"encoding/gob" | 	"encoding/gob" | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package app | package outcome | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"os" | 	"os" | ||||||
| @ -10,7 +10,7 @@ import ( | |||||||
| 
 | 
 | ||||||
| 	"hakurei.app/container/check" | 	"hakurei.app/container/check" | ||||||
| 	"hakurei.app/hst" | 	"hakurei.app/hst" | ||||||
| 	"hakurei.app/internal/app/state" | 	"hakurei.app/internal/state" | ||||||
| 	"hakurei.app/message" | 	"hakurei.app/message" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user