## CUE Generator Auto generation of CUE schema and docs from Go struct ## Type Conversion - All comments will be copied to CUE schema ### Basic Types | Go Type | CUE Type | |:------------------:|:---------:| | `int` | `int` | | `int8` | `int8` | | `int16` | `int16` | | `int32` | `int32` | | `int64` | `int64` | | `uint` | `uint` | | `uint8` | `uint8` | | `uint16` | `uint16` | | `uint32` | `uint32` | | `uint64` | `uint64` | | `float32` | `float32` | | `float64` | `float64` | | `string` | `string` | | `bool` | `bool` | | `nil` | `null` | | `byte` | `uint8` | | `uintptr` | `uint64` | | `[]byte` | `bytes` | | `interface{}/any` | `_` | ### Map Type - CUE only supports `map[string]T` type, which is converted to `[string]: T` in CUE schema - All `map[string]any/map[string]interface{}` are converted to `{...}` in CUE schema ### Struct Type - Fields will be expanded recursively in CUE schema - All unexported fields will be ignored - Do not support recursive struct type, which will cause infinite loop `json` Tag: - Fields with `json:"FIELD_NAME"` tag will be renamed to `FIELD_NAME` in CUE schema, otherwise the field name will be used - Fields with `json:"-"` tag will be ignored in generation - Anonymous fields with `json:",inline"` tag will be expanded inlined in CUE schema - Fields with `json:",omitempty"` tag will be marked as optional in CUE schema `cue` Tag: - Format: `cue:"key1:value1;key2:value2;boolValue1;boolValue2"` - Fields with `cue:"enum:VALUE1,VALUE2"` tag will be set with enum values `VALUE1` and `VALUE2` in CUE schema - Fields with `cue:"default:VALUE"` tag will be set with default value `VALUE` in CUE schema, and `VALUE` must be one of go basic types, including `int`, `float`, `string`, `bool` - Separators `';'`, `':'` and `','` can be escaped with `'\'`, e.g. `cue:"default:va\\;lue\\:;enum:e\\;num1,e\\:num2\\,enum3"` will be parsed as `Default: "va;lue:", Enum: []string{"e;num1", "e:num2,enum3"}}`