package options

type SecretString struct {
	s *string
}

func NewSecretString(s string) SecretString {
	return SecretString{s: &s}
}

func (s SecretString) GoString() string {
	return `"` + s.String() + `"`
}

func (s SecretString) String() string {
	if s.s == nil || len(*s.s) == 0 {
		return ``
	}
	return `**redacted**`
}

func (s *SecretString) Unwrap() string {
	if s.s == nil {
		return ""
	}
	return *s.s
}