Skip to content

Latest commit

 

History

History
46 lines (33 loc) · 1.32 KB

README.adoc

File metadata and controls

46 lines (33 loc) · 1.32 KB

cueutils

Go Reference

Provides helpers to work with Cue.

Import: github.com/DavidGamba/dgtools/cueutils

Examples

//go:embed schemas/schema.cue
var f embed.FS

	configs := []cueutils.CueConfigFile{}

	// Read embedded schemas or explicit config files
	schemaFilename := "schemas/schema.cue"
	schemaFH, err := f.Open(schemaFilename)
	if err != nil {
		return fmt.Errorf("failed to open '%s': %w", schemaFilename, err)
	}
	defer schemaFH.Close()
	configs = append(configs, cueutils.CueConfigFile{Data: schemaFH, Name: schemaFilename})

	// Read all cue files from a given dir
	dir := "config"

	// Filter to a given package name or set to _ for files without a package
	packageName := "myPackage"

	// Virtual module name to be used for the cue files, can be left blank if there is alreay a module in the dir
	virtualCueModuleName := "my.module"

	// Provide a pointer receiver for evaluated data for mostly debugging purposes
	value := cueutils.NewValue()

	// Unmarshal into local data structure
	d := MyDataStructure{}

	err = cueutils.Unmarshal(configs, dir, packageName, virtualCueModuleName, value, &d)
	if err != nil {
		return fmt.Errorf("failed to unmarshal: %w", err)
	}