package main type winreg struct { props properties env environmentInfo Value string } const ( // path from the supplied root under which the key exists RegistryPath Property = "path" // key within full reg path formed from two above RegistryKey Property = "key" // Fallback is the text to display if the key is not found Fallback Property = "fallback" ) func (wr *winreg) init(props properties, env environmentInfo) { wr.props = props wr.env = env } func (wr *winreg) enabled() bool { if wr.env.getRuntimeGOOS() != windowsPlatform { return false } registryPath := wr.props.getString(RegistryPath, "") registryKey := wr.props.getString(RegistryKey, "") fallback := wr.props.getString(Fallback, "") var err error wr.Value, err = wr.env.getWindowsRegistryKeyValue(registryPath, registryKey) if err == nil { return true } if len(fallback) > 0 { wr.Value = fallback return true } return false } func (wr *winreg) string() string { segmentTemplate := wr.props.getString(SegmentTemplate, "{{ .Value }}") return wr.templateString(segmentTemplate) } func (wr *winreg) templateString(segmentTemplate string) string { template := &textTemplate{ Template: segmentTemplate, Context: wr, Env: wr.env, } text, err := template.render() if err != nil { return err.Error() } return text }