github.com/Ilhicas/nomad@v1.0.4-0.20210304152020-e86851182bc3/helper/pluginutils/hclutils/types.go (about)

     1  package hclutils
     2  
     3  import (
     4  	"github.com/hashicorp/go-msgpack/codec"
     5  )
     6  
     7  // MapStrInt is a wrapper for map[string]int that handles
     8  // deserialization from different hcl2 json representation
     9  // that were supported in Nomad 0.8
    10  type MapStrInt map[string]int
    11  
    12  func (s *MapStrInt) CodecEncodeSelf(enc *codec.Encoder) {
    13  	v := []map[string]int{*s}
    14  	enc.MustEncode(v)
    15  }
    16  
    17  func (s *MapStrInt) CodecDecodeSelf(dec *codec.Decoder) {
    18  	ms := []map[string]int{}
    19  	dec.MustDecode(&ms)
    20  
    21  	r := map[string]int{}
    22  	for _, m := range ms {
    23  		for k, v := range m {
    24  			r[k] = v
    25  		}
    26  	}
    27  	*s = r
    28  }
    29  
    30  // MapStrStr is a wrapper for map[string]string that handles
    31  // deserialization from different hcl2 json representation
    32  // that were supported in Nomad 0.8
    33  type MapStrStr map[string]string
    34  
    35  func (s *MapStrStr) CodecEncodeSelf(enc *codec.Encoder) {
    36  	v := []map[string]string{*s}
    37  	enc.MustEncode(v)
    38  }
    39  
    40  func (s *MapStrStr) CodecDecodeSelf(dec *codec.Decoder) {
    41  	ms := []map[string]string{}
    42  	dec.MustDecode(&ms)
    43  
    44  	r := map[string]string{}
    45  	for _, m := range ms {
    46  		for k, v := range m {
    47  			r[k] = v
    48  		}
    49  	}
    50  	*s = r
    51  }