func()

in client/local.go [33:77]


func (l *localFunctionServer) Start(stdoutFile, stderrFile, functionOutputFile string) (func(), error) {
	l.stdoutFile = stdoutFile
	l.stderrFile = stderrFile
	l.functionOutputFile = functionOutputFile
	args := strings.Fields(l.cmd)
	cmd := newCmd(args)

	stdout, err := os.Create(l.stdoutFile)
	if err != nil {
		return nil, err
	}
	cmd.Stdout = stdout

	stderr, err := os.Create(l.stderrFile)
	if err != nil {
		return nil, err
	}
	cmd.Stderr = stderr
	cmd.Env = os.Environ()
	for _, s := range l.envs {
		if s != "" {
			cmd.Env = append(cmd.Env, s)
		}
	}
	err = cmd.Start()
	if err != nil {
		return nil, err
	}
	log.Printf("Framework server started.")

	// Give it some time to do its setup.
	time.Sleep(time.Duration(*startDelay) * time.Second)

	shutdown := func() {
		stdout.Close()
		stderr.Close()

		if err := stopCmd(cmd); err != nil {
			log.Fatalf("Failed to shut down framework server: %v", err)
		}

		log.Printf("Framework server shut down. Wrote logs to %v and %v.", l.stdoutFile, l.stderrFile)
	}
	return shutdown, nil
}