in client/buildpacks.go [137:176]
func (b *buildpacksFunctionServer) run() (func(), error) {
// Create logs output files.
var err error
b.logStdout, err = os.Create(b.stdoutFile)
if err != nil {
return nil, err
}
b.logStderr, err = os.Create(b.stderrFile)
if err != nil {
return nil, err
}
var args = b.getDockerRunCommand()
cmd := exec.Command(args[0], args[1:]...)
err = cmd.Start()
// TODO: figure out why this isn't picking up errors.
if err != nil {
return nil, err
}
// Give it some time to do its setup.
time.Sleep(time.Duration(*startDelay) * time.Second)
log.Printf("Framework container %q started.", b.containerID())
return func() {
if err := b.logs(); err != nil {
log.Fatalf("getting container logs: %v", err)
}
log.Printf("Wrote logs to %v and %v.", b.stdoutFile, b.stderrFile)
if err := cmd.Process.Kill(); err != nil {
log.Fatalf("failed to kill process: %v", err)
}
if err := b.killContainer(); err != nil {
log.Fatalf("failed to kill container: %v", err)
}
log.Print("Framework server shut down.")
}, nil
}