diff options
| author | 2026-03-06 10:52:02 +0800 | |
|---|---|---|
| committer | 2026-03-06 10:53:37 +0800 | |
| commit | f36918966727be99bfe9d461059269f36f92058a (patch) | |
| tree | ff2c6545d369a74c210574f821298181307c701a /config/result.go | |
| parent | objecttype: Split files (diff) | |
| signature | No signature | |
config: Split files
Diffstat (limited to 'config/result.go')
| -rw-r--r-- | config/result.go | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/config/result.go b/config/result.go new file mode 100644 index 00000000..1f53edc5 --- /dev/null +++ b/config/result.go @@ -0,0 +1,68 @@ +package config + +import ( + "errors" + "fmt" +) + +// LookupResult is a value returned by Lookup/LookupAll. +type LookupResult struct { + Kind ValueKind + Value string +} + +// String returns the explicit string value. +func (r LookupResult) String() (string, error) { + switch r.Kind { + case ValueMissing: + return "", errors.New("missing config value") + case ValueValueless: + return "", errors.New("valueless config key") + case ValueString: + return r.Value, nil + default: + return "", fmt.Errorf("unknown value kind %d", r.Kind) + } +} + +// Bool interprets this lookup result using Git config boolean rules. +func (r LookupResult) Bool() (bool, error) { + switch r.Kind { + case ValueMissing: + return false, errors.New("missing config value") + case ValueValueless: + return true, nil + case ValueString: + return parseBool(r.Value) + default: + return false, fmt.Errorf("unknown value kind %d", r.Kind) + } +} + +// Int interprets this lookup result as a Git integer value. +func (r LookupResult) Int() (int, error) { + switch r.Kind { + case ValueMissing: + return 0, errors.New("missing config value") + case ValueValueless: + return 0, errors.New("valueless config key") + case ValueString: + return parseInt(r.Value) + default: + return 0, fmt.Errorf("unknown value kind %d", r.Kind) + } +} + +// Int64 interprets this lookup result as a Git int64 value. +func (r LookupResult) Int64() (int64, error) { + switch r.Kind { + case ValueMissing: + return 0, errors.New("missing config value") + case ValueValueless: + return 0, errors.New("valueless config key") + case ValueString: + return parseInt64(r.Value) + default: + return 0, fmt.Errorf("unknown value kind %d", r.Kind) + } +} |
