func()

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
}