nixbuild/copy.go
2025-07-23 11:43:14 +09:00

27 lines
518 B
Go

package nix
import (
"context"
"iter"
"os"
)
// Copy copies installables to the binary cache store.
func Copy(ctx Context, store Store, installables iter.Seq[string]) error {
if store == nil {
return os.ErrInvalid
}
c, cancel := context.WithCancel(ctx.Unwrap())
defer cancel()
cmd := ctx.Nix(c, CommandCopy,
FlagTo, store.String(),
FlagStdin)
cmd.Env = append(os.Environ(), store.Environ()...)
cmd.Stdout, cmd.Stderr = ctx.Streams()
_, err := ctx.WriteStdin(cmd, installables, nil)
return err
}