gitlab.com/jfprevost/gitlab-runner-notlscheck@v11.11.4+incompatible/helpers/converter.go (about)

     1  package helpers
     2  
     3  import (
     4  	"bufio"
     5  	"bytes"
     6  	"github.com/BurntSushi/toml"
     7  	"gopkg.in/yaml.v2"
     8  )
     9  
    10  func ToYAML(src interface{}) string {
    11  	data, err := yaml.Marshal(src)
    12  	if err == nil {
    13  		return string(data)
    14  	}
    15  	return ""
    16  }
    17  
    18  func ToTOML(src interface{}) string {
    19  	var data bytes.Buffer
    20  	buffer := bufio.NewWriter(&data)
    21  
    22  	if err := toml.NewEncoder(buffer).Encode(src); err != nil {
    23  		return ""
    24  	}
    25  
    26  	if err := buffer.Flush(); err != nil {
    27  		return ""
    28  	}
    29  
    30  	return data.String()
    31  }
    32  
    33  func ToConfigMap(list interface{}) (map[string]interface{}, bool) {
    34  	x, ok := list.(map[string]interface{})
    35  	if ok {
    36  		return x, ok
    37  	}
    38  
    39  	y, ok := list.(map[interface{}]interface{})
    40  	if !ok {
    41  		return nil, false
    42  	}
    43  
    44  	result := make(map[string]interface{})
    45  	for k, v := range y {
    46  		result[k.(string)] = v
    47  	}
    48  
    49  	return result, true
    50  }
    51  
    52  func GetMapKey(value map[string]interface{}, keys ...string) (result interface{}, ok bool) {
    53  	result = value
    54  
    55  	for _, key := range keys {
    56  		if stringMap, ok := result.(map[string]interface{}); ok {
    57  			if result, ok = stringMap[key]; ok {
    58  				continue
    59  			}
    60  		} else if interfaceMap, ok := result.(map[interface{}]interface{}); ok {
    61  			if result, ok = interfaceMap[key]; ok {
    62  				continue
    63  			}
    64  		}
    65  		return nil, false
    66  	}
    67  
    68  	return result, true
    69  }