diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-06-17 01:54:29 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-06-17 01:54:29 +0900 |
| commit | 28e133c298c2e9d45c57ab570e35936248d86ddf (patch) | |
| tree | a88ec3b5e54b0b836e20c4c0dfee62eaf26c4907 /cmd/app | |
| parent | 323dcb282082f1aa6cc66a9100be0fadb077714c (diff) | |
cmd/app: start application from configuration
This is currently not very usable due to hakurei immutable overlay mount limitations.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'cmd/app')
| -rw-r--r-- | cmd/app/main.go | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/cmd/app/main.go b/cmd/app/main.go index a10412e9..6171a27a 100644 --- a/cmd/app/main.go +++ b/cmd/app/main.go @@ -6,8 +6,10 @@ package main import ( "context" + "errors" "log" "os" + "os/exec" "os/signal" "path/filepath" "syscall" @@ -124,7 +126,35 @@ func main() { ) } + c.NewCommand( + "run", "Start the named application", + func(args []string) error { + if len(args) != 1 { + return errors.New("run requires 1 argument") + } + + var config *hst.Config + f, err := os.Open(base.Append("app", args[0]).String()) + if err != nil { + return err + } + config, err = parse(args[0], base, f) + if closeErr := f.Close(); err == nil { + err = closeErr + } + if err != nil { + return err + } + + return run(ctx, msg, config) + }, + ) + c.MustParse(os.Args[1:], func(err error) { + if e, ok := errors.AsType[*exec.ExitError](err); ok && e != nil { + os.Exit(e.ExitCode()) + } + if w, ok := err.(interface{ Unwrap() []error }); !ok { log.Fatal(err) } else { |
