diff options
Diffstat (limited to 'internal/outcome/main.go')
| -rw-r--r-- | internal/outcome/main.go | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/internal/outcome/main.go b/internal/outcome/main.go new file mode 100644 index 00000000..06327963 --- /dev/null +++ b/internal/outcome/main.go @@ -0,0 +1,27 @@ +package outcome + +import ( + "context" + "log" + "os" + + "hakurei.app/hst" + "hakurei.app/message" +) + +// Main runs an app according to [hst.Config] and terminates. Main does not return. +func Main(ctx context.Context, msg message.Msg, config *hst.Config) { + var id hst.ID + if err := hst.NewInstanceID(&id); err != nil { + log.Fatal(err.Error()) + } + + seal := outcome{syscallDispatcher: direct{msg}} + if err := seal.finalise(ctx, msg, &id, config); err != nil { + printMessageError("cannot seal app:", err) + os.Exit(1) + } + + seal.main(msg) + panic("unreachable") +} |
