package trim

import "cuelang.org/go/tools/trim"

Package trim removes some redundant values from CUE sources.

The most common use of trim is to remove duplicate values from data where a definition now provides the same value. For example:

servers: [
	{role: "web", cpus: 1},
	{role: "db", cpus: 1},
	{role: "proxy", cpus: 1},
]

#server: {
	role: string
	cpus: 1
}

servers: [...#server]

Trim will simplify this to:

servers: [
	{role: "web"},
	{role: "db"},
	{role: "proxy"},
]

#server: {
	role: string
	cpus: 1
}

servers: [...#server]

This works with defaults too. Given:

servers: [
	{role: "web", cpus: 1},
	{role: "db", cpus: 4},
	{role: "proxy", cpus: 1},
]

#server: {
	role: string
	cpus: *1 | int
}

servers: [...#server]

Trim will simplify this to:

servers: [
	{role: "web"},
	{role: "db", cpus: 4},
	{role: "proxy"},
]

#server: {
	role: string
	cpus: *1 | int
}

servers: [...#server]

Index

Functions

func Files

func Files(files []*ast.File, inst cue.InstanceOrValue, cfg *Config) error

Types

type Config

type Config struct {
	Trace       bool
	TraceWriter io.Writer
}

Config configures trim options.

Source Files

doc.go trim.go trimv3.go

Version
v0.15.1 (latest)
Published
Nov 21, 2025
Platform
linux/amd64
Imports
14 packages
Last checked
4 months ago

Tools for package owners.