aboutsummaryrefslogtreecommitdiffhomepage
path: root/cmd/app
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-06-17 01:54:29 +0900
committerOphestra <cat@gensokyo.uk>2026-06-17 01:54:29 +0900
commit28e133c298c2e9d45c57ab570e35936248d86ddf (patch)
treea88ec3b5e54b0b836e20c4c0dfee62eaf26c4907 /cmd/app
parent323dcb282082f1aa6cc66a9100be0fadb077714c (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.go30
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 {