nixbuild/build.go
Ophestra a3427ce7dd
context: interface command type
This should allow caller to override the method to run in a container.
2025-09-13 13:06:39 +09:00

30 lines
588 B
Go

package nix
import (
"context"
"iter"
)
// Build builds all entries yielded by installables.
func Build(ctx Context, installables iter.Seq[string]) error {
c, cancel := context.WithCancel(ctx.Unwrap())
defer cancel()
stdout, stderr := ctx.Streams()
cmd := ctx.Nix(c, CommandBuild,
FlagKeepGoing, FlagNoLink, FlagStdin)
if stdout != nil {
cmd.Stdout(stdout)
cmd.AppendArgs(FlagPrintBuildLogs)
} else {
cmd.AppendArgs(FlagQuiet)
}
if stderr != nil {
cmd.Stderr(stderr)
cmd.AppendArgs(FlagVerbose)
}
_, err := ctx.WriteStdin(cmd, installables, nil)
return err
}