mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-04 10:03:42 +08:00 
			
		
		
		
	This allows using either the csv syntax or object syntax to specify certain attributes. This applies to the following fields: - output - cache-from - cache-to - secret - ssh There are still some remaining fields to translate. Specifically ulimits, annotations, and attest. Signed-off-by: Jonathan A. Sternberg <jonathan.sternberg@docker.com>
		
			
				
	
	
		
			66 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright (c) HashiCorp, Inc.
 | 
						|
// SPDX-License-Identifier: MPL-2.0
 | 
						|
 | 
						|
// Package gohcl allows decoding HCL configurations into Go data structures.
 | 
						|
//
 | 
						|
// It provides a convenient and concise way of describing the schema for
 | 
						|
// configuration and then accessing the resulting data via native Go
 | 
						|
// types.
 | 
						|
//
 | 
						|
// A struct field tag scheme is used, similar to other decoding and
 | 
						|
// unmarshalling libraries. The tags are formatted as in the following example:
 | 
						|
//
 | 
						|
//	ThingType string `hcl:"thing_type,attr"`
 | 
						|
//
 | 
						|
// Within each tag there are two comma-separated tokens. The first is the
 | 
						|
// name of the corresponding construct in configuration, while the second
 | 
						|
// is a keyword giving the kind of construct expected. The following
 | 
						|
// kind keywords are supported:
 | 
						|
//
 | 
						|
//	attr (the default) indicates that the value is to be populated from an attribute
 | 
						|
//	block indicates that the value is to populated from a block
 | 
						|
//	label indicates that the value is to populated from a block label
 | 
						|
//	optional is the same as attr, but the field is optional
 | 
						|
//	remain indicates that the value is to be populated from the remaining body after populating other fields
 | 
						|
//
 | 
						|
// "attr" fields may either be of type *hcl.Expression, in which case the raw
 | 
						|
// expression is assigned, or of any type accepted by gocty, in which case
 | 
						|
// gocty will be used to assign the value to a native Go type.
 | 
						|
//
 | 
						|
// "block" fields may be a struct that recursively uses the same tags, or a
 | 
						|
// slice of such structs, in which case multiple blocks of the corresponding
 | 
						|
// type are decoded into the slice.
 | 
						|
//
 | 
						|
// "body" can be placed on a single field of type hcl.Body to capture
 | 
						|
// the full hcl.Body that was decoded for a block. This does not allow leftover
 | 
						|
// values like "remain", so a decoding error will still be returned if leftover
 | 
						|
// fields are given. If you want to capture the decoding body PLUS leftover
 | 
						|
// fields, you must specify a "remain" field as well to prevent errors. The
 | 
						|
// body field and the remain field will both contain the leftover fields.
 | 
						|
//
 | 
						|
// "label" fields are considered only in a struct used as the type of a field
 | 
						|
// marked as "block", and are used sequentially to capture the labels of
 | 
						|
// the blocks being decoded. In this case, the name token is used only as
 | 
						|
// an identifier for the label in diagnostic messages.
 | 
						|
//
 | 
						|
// "optional" fields behave like "attr" fields, but they are optional
 | 
						|
// and will not give parsing errors if they are missing.
 | 
						|
//
 | 
						|
// "remain" can be placed on a single field that may be either of type
 | 
						|
// hcl.Body or hcl.Attributes, in which case any remaining body content is
 | 
						|
// placed into this field for delayed processing. If no "remain" field is
 | 
						|
// present then any attributes or blocks not matched by another valid tag
 | 
						|
// will cause an error diagnostic.
 | 
						|
//
 | 
						|
// Only a subset of this tagging/typing vocabulary is supported for the
 | 
						|
// "Encode" family of functions. See the EncodeIntoBody docs for full details
 | 
						|
// on the constraints there.
 | 
						|
//
 | 
						|
// Broadly-speaking this package deals with two types of error. The first is
 | 
						|
// errors in the configuration itself, which are returned as diagnostics
 | 
						|
// written with the configuration author as the target audience. The second
 | 
						|
// is bugs in the calling program, such as invalid struct tags, which are
 | 
						|
// surfaced via panics since there can be no useful runtime handling of such
 | 
						|
// errors and they should certainly not be returned to the user as diagnostics.
 | 
						|
package gohcl
 |