mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-04 10:03:42 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			32 lines
		
	
	
		
			753 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			753 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package convert
 | 
						|
 | 
						|
import (
 | 
						|
	"github.com/zclconf/go-cty/cty"
 | 
						|
)
 | 
						|
 | 
						|
func conversionToCapsule(inTy, outTy cty.Type, fn func(inTy cty.Type) func(cty.Value, cty.Path) (interface{}, error)) conversion {
 | 
						|
	rawConv := fn(inTy)
 | 
						|
	if rawConv == nil {
 | 
						|
		return nil
 | 
						|
	}
 | 
						|
 | 
						|
	return func(in cty.Value, path cty.Path) (cty.Value, error) {
 | 
						|
		rawV, err := rawConv(in, path)
 | 
						|
		if err != nil {
 | 
						|
			return cty.NilVal, err
 | 
						|
		}
 | 
						|
		return cty.CapsuleVal(outTy, rawV), nil
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func conversionFromCapsule(inTy, outTy cty.Type, fn func(outTy cty.Type) func(interface{}, cty.Path) (cty.Value, error)) conversion {
 | 
						|
	rawConv := fn(outTy)
 | 
						|
	if rawConv == nil {
 | 
						|
		return nil
 | 
						|
	}
 | 
						|
 | 
						|
	return func(in cty.Value, path cty.Path) (cty.Value, error) {
 | 
						|
		return rawConv(in.EncapsulatedValue(), path)
 | 
						|
	}
 | 
						|
}
 |