From 806cf534caf0e1b9505005f19a11554b5a8c5d77 Mon Sep 17 00:00:00 2001 From: Travis Bischel Date: Wed, 9 Mar 2022 21:58:29 -0700 Subject: [PATCH] kmsg: add TextMarshaler/TextUnmarshaler to enums --- generate/gen.go | 16 +++++ generate/main.go | 2 + pkg/kmsg/generated.go | 132 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 150 insertions(+) diff --git a/generate/gen.go b/generate/gen.go index 3d22e9e7..6282e8c0 100644 --- a/generate/gen.go +++ b/generate/gen.go @@ -799,6 +799,22 @@ func (e Enum) WriteParseFunc(l *LineWriter) { l.Write("}") } +func (e Enum) WriteUnmarshalTextFunc(l *LineWriter) { + l.Write("// UnmarshalText implements encoding.TextUnmarshaler.") + l.Write("func (e *%s) UnmarshalText(text []byte) error {", e.Name) + l.Write("v, err := Parse%s(string(text))", e.Name) + l.Write("*e = v") + l.Write("return err") + l.Write("}") +} + +func (e Enum) WriteMarshalTextFunc(l *LineWriter) { + l.Write("// MarshalText implements encoding.TextMarshaler.") + l.Write("func (e %s) MarshalText() (text []byte, err error) {", e.Name) + l.Write("return []byte(e.String()), nil") + l.Write("}") +} + func strnorm(s string) string { s = strings.ReplaceAll(s, ".", "") s = strings.ReplaceAll(s, "_", "") diff --git a/generate/main.go b/generate/main.go index 0635bf38..7f39e23c 100644 --- a/generate/main.go +++ b/generate/main.go @@ -529,6 +529,8 @@ func main() { e.WriteStringsFunc(l) e.WriteParseFunc(l) e.WriteConsts(l) + e.WriteMarshalTextFunc(l) + e.WriteUnmarshalTextFunc(l) } writeStrnorm(l) diff --git a/pkg/kmsg/generated.go b/pkg/kmsg/generated.go index 09a8e045..f7485251 100644 --- a/pkg/kmsg/generated.go +++ b/pkg/kmsg/generated.go @@ -39662,6 +39662,18 @@ const ( ConfigResourceTypeBrokerLogger ConfigResourceType = 8 ) +// MarshalText implements encoding.TextMarshaler. +func (e ConfigResourceType) MarshalText() (text []byte, err error) { + return []byte(e.String()), nil +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (e *ConfigResourceType) UnmarshalText(text []byte) error { + v, err := ParseConfigResourceType(string(text)) + *e = v + return err +} + // Where a config entry is from. If there are no config synonyms, // the source is DEFAULT_CONFIG. // @@ -39751,6 +39763,18 @@ const ( ConfigSourceDynamicBrokerLoggerConfig ConfigSource = 6 ) +// MarshalText implements encoding.TextMarshaler. +func (e ConfigSource) MarshalText() (text []byte, err error) { + return []byte(e.String()), nil +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (e *ConfigSource) UnmarshalText(text []byte) error { + v, err := ParseConfigSource(string(text)) + *e = v + return err +} + // A configuration data type. // // Possible values and their meanings: @@ -39857,6 +39881,18 @@ const ( ConfigTypePassword ConfigType = 9 ) +// MarshalText implements encoding.TextMarshaler. +func (e ConfigType) MarshalText() (text []byte, err error) { + return []byte(e.String()), nil +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (e *ConfigType) UnmarshalText(text []byte) error { + v, err := ParseConfigType(string(text)) + *e = v + return err +} + // An incremental configuration operation. // // Possible values and their meanings: @@ -39922,6 +39958,18 @@ const ( IncrementalAlterConfigOpSubtract IncrementalAlterConfigOp = 3 ) +// MarshalText implements encoding.TextMarshaler. +func (e IncrementalAlterConfigOp) MarshalText() (text []byte, err error) { + return []byte(e.String()), nil +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (e *IncrementalAlterConfigOp) UnmarshalText(text []byte) error { + v, err := ParseIncrementalAlterConfigOp(string(text)) + *e = v + return err +} + // ACLResourceType is a type of resource to use for ACLs. // // Possible values and their meanings: @@ -40004,6 +40052,18 @@ const ( ACLResourceTypeDelegationToken ACLResourceType = 6 ) +// MarshalText implements encoding.TextMarshaler. +func (e ACLResourceType) MarshalText() (text []byte, err error) { + return []byte(e.String()), nil +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (e *ACLResourceType) UnmarshalText(text []byte) error { + v, err := ParseACLResourceType(string(text)) + *e = v + return err +} + // ACLResourcePatternType is how an acl's ResourceName is understood. // // This field was added with Kafka 2.0.0 for KIP-290. @@ -40076,6 +40136,18 @@ const ( ACLResourcePatternTypePrefixed ACLResourcePatternType = 4 ) +// MarshalText implements encoding.TextMarshaler. +func (e ACLResourcePatternType) MarshalText() (text []byte, err error) { + return []byte(e.String()), nil +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (e *ACLResourcePatternType) UnmarshalText(text []byte) error { + v, err := ParseACLResourcePatternType(string(text)) + *e = v + return err +} + // An ACL permission type. // // Possible values and their meanings: @@ -40137,6 +40209,18 @@ const ( ACLPermissionTypeAllow ACLPermissionType = 3 ) +// MarshalText implements encoding.TextMarshaler. +func (e ACLPermissionType) MarshalText() (text []byte, err error) { + return []byte(e.String()), nil +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (e *ACLPermissionType) UnmarshalText(text []byte) error { + v, err := ParseACLPermissionType(string(text)) + *e = v + return err +} + // An ACL operation. // // Possible values and their meanings: @@ -40269,6 +40353,18 @@ const ( ACLOperationIdempotentWrite ACLOperation = 12 ) +// MarshalText implements encoding.TextMarshaler. +func (e ACLOperation) MarshalText() (text []byte, err error) { + return []byte(e.String()), nil +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (e *ACLOperation) UnmarshalText(text []byte) error { + v, err := ParseACLOperation(string(text)) + *e = v + return err +} + // TransactionState is the state of a transaction. // // Possible values and their meanings: @@ -40366,6 +40462,18 @@ const ( TransactionStatePrepareEpochFence TransactionState = 7 ) +// MarshalText implements encoding.TextMarshaler. +func (e TransactionState) MarshalText() (text []byte, err error) { + return []byte(e.String()), nil +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (e *TransactionState) UnmarshalText(text []byte) error { + v, err := ParseTransactionState(string(text)) + *e = v + return err +} + // QuotasMatchType specifies how to match a Quota entity as part of the DescribeClientQuotasRequestComponent. // // Possible values and their meanings: @@ -40426,6 +40534,18 @@ const ( QuotasMatchTypeAny QuotasMatchType = 2 ) +// MarshalText implements encoding.TextMarshaler. +func (e QuotasMatchType) MarshalText() (text []byte, err error) { + return []byte(e.String()), nil +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (e *QuotasMatchType) UnmarshalText(text []byte) error { + v, err := ParseQuotasMatchType(string(text)) + *e = v + return err +} + // Possible values and their meanings: // // * 0 (ABORT) @@ -40489,6 +40609,18 @@ const ( ControlRecordKeyTypeLeaderChange ControlRecordKeyType = 3 ) +// MarshalText implements encoding.TextMarshaler. +func (e ControlRecordKeyType) MarshalText() (text []byte, err error) { + return []byte(e.String()), nil +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (e *ControlRecordKeyType) UnmarshalText(text []byte) error { + v, err := ParseControlRecordKeyType(string(text)) + *e = v + return err +} + func strnorm(s string) string { s = strings.ReplaceAll(s, ".", "") s = strings.ReplaceAll(s, "_", "")