func (c *Car) Render(out chan<- string) {
	defer close(out)
	hostname, _ := os.Hostname()
	var s string
	if s = os.Getenv("BULLETTRAIN_CAR_HOST_TEMPLATE"); s == "" {
		s = carTemplate
	}
	funcMap := template.FuncMap{
		"c": func(t string) string { return ansi.Color(t, c.GetPaint()) },
	}
	tpl := template.Must(template.New("host").Funcs(funcMap).Parse(s))
	data := struct{ Host string }{Host: hostname}
	fromTpl := new(bytes.Buffer)
	err := tpl.Execute(fromTpl, data)
	if err != nil {
		log.Fatalf("Can't generate the host template: %s", err.Error())
	}
	out <- fromTpl.String()
}
Render builds and passes the end product of a completely composed car onto
the channel.
package carHost
import (
	"bytes"
	"log"
	"os"
	"text/template"
	"github.com/bullettrain-sh/bullettrain-go-core/src/ansi"
)
const (
	carPaint    = "black:white"
	carTemplate = `{{.Host | c}}`
)
type Car struct {
	paint string
}
func (c *Car) GetPaint() string {
	if c.paint = os.Getenv("BULLETTRAIN_CAR_HOST_PAINT"); c.paint == "" {
		c.paint = carPaint
	}
	return c.paint
}
func (c *Car) CanShow() bool {
	s := true
	if e := os.Getenv("BULLETTRAIN_CAR_HOST_SHOW"); e == "false" {
		s = false
	}
	return s
}