cmd/app: optionally override configured command
Test / Create distribution (push) Successful in 50s
Test / Sandbox (push) Successful in 2m45s
Test / ShareFS (push) Successful in 3m50s
Test / Hakurei (push) Successful in 4m1s
Test / Sandbox (race detector) (push) Successful in 5m33s
Test / Hakurei (race detector) (push) Successful in 6m35s
Test / Flake checks (push) Successful in 1m9s

Useful for multiple applications sharing state.

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
2026-06-20 01:31:07 +09:00
parent 7ab54b8c94
commit 4892beefc1
3 changed files with 58 additions and 44 deletions
+1 -1
View File
@@ -80,7 +80,7 @@ func parse(id string, base *check.Absolute, r io.Reader) (*hst.Config, error) {
Shell: shell,
Home: home,
Path: shell,
Args: []string{"zsh", "-c"},
Args: []string{"zsh", "-ic"},
Flags: hst.FCoverRun,
},
+1 -1
View File
@@ -118,7 +118,7 @@ talk com.canonical.Unity
Home: hst.AbsPrivateTmp.Append("home"),
Path: fhs.AbsRoot.Append("bin", "zsh"),
Args: []string{
"zsh", "-c",
"zsh", "-ic",
"exec Discord --ozone-platform-hint=wayland",
},
+56 -42
View File
@@ -141,57 +141,71 @@ func main() {
)
}
c.NewCommand(
"run", "Start the named application",
func(args []string) error {
if len(args) != 1 {
dents, err := os.ReadDir(base.Append("app").String())
{
var (
flagCommand string
)
c.NewCommand(
"run", "Start the named application",
func(args []string) error {
if len(args) != 1 {
dents, err := os.ReadDir(base.Append("app").String())
if err != nil {
return err
}
for _, dent := range dents {
if dent.IsDir() {
continue
}
fmt.Println(dent.Name())
}
return nil
}
var config *hst.Config
var r io.Reader
f, err := os.Open(base.Append("app", args[0]).String())
if err != nil {
return err
}
for _, dent := range dents {
if dent.IsDir() {
continue
r = f
var common *os.File
if common, err = os.Open(base.Append("common").String()); err != nil {
if !errors.Is(err, os.ErrNotExist) {
_ = f.Close()
return err
}
fmt.Println(dent.Name())
} else {
r = io.MultiReader(f, common)
}
return nil
}
var config *hst.Config
var r io.Reader
f, err := os.Open(base.Append("app", args[0]).String())
if err != nil {
return err
}
r = f
var common *os.File
if common, err = os.Open(base.Append("common").String()); err != nil {
if !errors.Is(err, os.ErrNotExist) {
_ = f.Close()
return err
}
} else {
r = io.MultiReader(f, common)
}
config, err = parse(args[0], base, r)
if closeErr := f.Close(); err == nil {
err = closeErr
}
if common != nil {
if closeErr := common.Close(); err == nil {
config, err = parse(args[0], base, r)
if closeErr := f.Close(); err == nil {
err = closeErr
}
}
if err != nil {
return err
}
if common != nil {
if closeErr := common.Close(); err == nil {
err = closeErr
}
}
if err != nil {
return err
}
return run(ctx, msg, config)
},
)
if flagCommand != "" {
config.Container.Args[2] = flagCommand
}
return run(ctx, msg, config)
},
).
Flag(
&flagCommand,
"command", command.StringFlag(""),
"Override configured command",
)
}
c.MustParse(os.Args[1:], func(err error) {
if e, ok := errors.AsType[*exec.ExitError](err); ok && e != nil {