本文整理汇总了Golang中github.com/go-yaml/yaml.Marshal函数的典型用法代码示例。如果您正苦于以下问题:Golang Marshal函数的具体用法?Golang Marshal怎么用?Golang Marshal使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Marshal函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: toYaml
// Return the given interface as a YAML byte slice.
func toYaml(i interface{}) []byte {
data, err := yaml.Marshal(i)
if err != nil {
panic(err)
}
return data
}
示例2: yamlFn
func yamlFn(v interface{}) (string, error) {
data, err := yaml.Marshal(v)
if err != nil {
return "", err
}
return string(data), nil
}
示例3: WriteTo
func (metadata *RightScriptMetadata) WriteTo(script io.Writer) (n int64, err error) {
if metadata.Comment == "" {
metadata.Comment = "#"
}
if metadata.Inputs == nil {
metadata.Inputs = InputMap{}
}
c, err := fmt.Fprintf(script, "%s ---\n", metadata.Comment)
if n += int64(c); err != nil {
return
}
yml, err := yaml.Marshal(metadata)
scanner := bufio.NewScanner(bytes.NewBuffer(yml))
for scanner.Scan() {
c, err = fmt.Fprintf(script, "%s %s\n", metadata.Comment, scanner.Text())
if n += int64(c); err != nil {
return
}
}
if err = scanner.Err(); err != nil {
return
}
c, err = fmt.Fprintf(script, "%s ...\n", metadata.Comment)
if n += int64(c); err != nil {
return
}
return
}
示例4: Execute
// Execute runs the command
func (c *CommandPush) Execute(b *Build) (State, error) {
if len(c.cfg.args) != 1 {
return b.state, fmt.Errorf("PUSH requires exactly one argument")
}
if b.state.ImageID == "" {
return b.state, fmt.Errorf("Cannot PUSH empty image")
}
if err := b.client.TagImage(b.state.ImageID, c.cfg.args[0]); err != nil {
return b.state, err
}
image := imagename.NewFromString(c.cfg.args[0])
artifact := imagename.Artifact{
Name: image,
Pushed: b.cfg.Push,
Tag: image.GetTag(),
ImageID: b.state.ImageID,
BuildTime: time.Now(),
}
// push image and add some lines to artifacts
if b.cfg.Push {
digest, err := b.client.PushImage(image.String())
if err != nil {
return b.state, err
}
artifact.Digest = digest
artifact.Addressable = fmt.Sprintf("%[email protected]%s", image.NameWithRegistry(), digest)
} else {
log.Infof("| Don't push. Pass --push flag to actually push to the registry")
}
// Publish artifact files
if b.cfg.ArtifactsPath != "" {
if err := os.MkdirAll(b.cfg.ArtifactsPath, 0755); err != nil {
return b.state, fmt.Errorf("Failed to create directory %s for the artifacts, error: %s", b.cfg.ArtifactsPath, err)
}
filePath := filepath.Join(b.cfg.ArtifactsPath, artifact.GetFileName())
artifacts := imagename.Artifacts{
[]imagename.Artifact{artifact},
}
content, err := yaml.Marshal(artifacts)
if err != nil {
return b.state, err
}
if err := ioutil.WriteFile(filePath, content, 0644); err != nil {
return b.state, fmt.Errorf("Failed to write artifact file %s, error: %s", filePath, err)
}
log.Infof("| Saved artifact file %s", filePath)
log.Debugf("Artifact properties: %# v", pretty.Formatter(artifact))
}
return b.state, nil
}
示例5: yamlFn
func yamlFn(args ...interface{}) (result string, err error) {
var (
i = 0
input interface{}
)
if len(args) == 1 {
input = args[0]
} else if len(args) == 2 {
if i, err = interfaceToInt(args[0]); err != nil {
return "", err
}
input = args[1]
} else {
return "", fmt.Errorf("yaml helper expects from 1 to 2 arguments, %d given", len(args))
}
data, err := yaml.Marshal(input)
if err != nil {
return "", err
}
result = string(data)
if i > 0 {
result = indent(strings.Repeat(" ", i), result)
}
return result, nil
}
示例6: CreateContainerOptions
// CreateContainerOptions returns create configuration eatable by go-dockerclient
func (a *Container) CreateContainerOptions() (*docker.CreateContainerOptions, error) {
apiConfig := a.Config.GetAPIConfig()
yamlData, err := yaml.Marshal(a.Config)
if err != nil {
return nil, err
}
// Copy labels because we want to assign some extra stuff
labels := map[string]string{}
for k, v := range apiConfig.Labels {
labels[k] = v
}
labels["rocker-compose-id"] = util.GenerateRandomID()
labels["rocker-compose-config"] = string(yamlData)
apiConfig.Labels = labels
apiConfig.Image = a.Image.String()
return &docker.CreateContainerOptions{
Name: a.Name.String(),
Config: apiConfig,
HostConfig: a.Config.GetAPIHostConfig(),
}, nil
}
示例7: Dump
func (c *Config) Dump() (yamlDoc string, err error) {
defer errs.PassE(&err)
buf, err := yaml.Marshal(c.ast)
errs.CheckE(err)
yamlDoc = string(buf)
return
}
示例8: TestYamlLink
func TestYamlLink(t *testing.T) {
assertions := map[string]string{
"platform.statsd": "platform.statsd:statsd",
"platform.statsd:metrics": "platform.statsd:metrics",
"/platform.statsd": "platform.statsd:statsd",
"/platform.statsd:metrics": "platform.statsd:metrics",
"statsd": "statsd:statsd",
"statsd:metrics": "statsd:metrics",
".statsd": "statsd:statsd",
".statsd:metrics": "statsd:metrics",
"": "\"\"",
}
for inYaml, outYaml := range assertions {
v := Link{}
if err := yaml.Unmarshal([]byte(inYaml), &v); err != nil {
t.Fatal(err)
}
data, err := yaml.Marshal(v)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, outYaml, strings.TrimSpace(string(data)))
}
}
示例9: saveDB
func (s *Supervisor) saveDB() error {
s.mu.Lock()
defer s.mu.Unlock()
data, err := yaml.Marshal(s.programs())
if err != nil {
return err
}
return ioutil.WriteFile(s.programPath(), data, 0644)
}
示例10: TestImagename_ToYaml
func TestImagename_ToYaml(t *testing.T) {
value := struct {
Name *ImageName
}{
NewFromString("hub/ns/name:1"),
}
data, err := yaml.Marshal(value)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, "name: hub/ns/name:1\n", string(data))
}
示例11: ShowConfiguration
func (config *ConfigViper) ShowConfiguration(output io.Writer) error {
// Check if config file exists
if _, err := os.Stat(config.ConfigFileUsed()); err != nil {
return err
}
yml, err := yaml.Marshal(config.AllSettings())
if err != nil {
return err
}
output.Write(yml)
return nil
}
示例12: run
func (a *yamlTestCases) run(t *testing.T) error {
for inYaml, outYaml := range a.assertions {
v := &Container{}
if err := yaml.Unmarshal([]byte(inYaml), v); err != nil {
return fmt.Errorf("Failed unmarshal for test %q, error: %s", inYaml, err)
}
data, err := yaml.Marshal(v)
if err != nil {
return fmt.Errorf("Failed marshal for test %q, error: %s", inYaml, err)
}
assert.Equal(t, outYaml, strings.TrimSpace(string(data)))
}
return nil
}
示例13: compareYaml
func compareYaml(name string, a, b *Container) (bool, error) {
av := reflect.Indirect(reflect.ValueOf(a)).FieldByName(name)
bv := reflect.Indirect(reflect.ValueOf(b)).FieldByName(name)
isSlice := av.Type().Kind() == reflect.Slice
isMap := av.Type().Kind() == reflect.Map
// empty values and nil pointer should be considered equal
if av.IsNil() && !isSlice && !isMap {
av = reflect.New(av.Type().Elem())
}
if bv.IsNil() && !isSlice && !isMap {
bv = reflect.New(bv.Type().Elem())
}
// sort lists which should not consider different order to be a change
if isSlice && name != "Entrypoint" && name != "Cmd" {
aSorted := newYamlSortable(av)
sort.Sort(aSorted)
av = reflect.ValueOf(aSorted)
bSorted := newYamlSortable(bv)
sort.Sort(bSorted)
bv = reflect.ValueOf(bSorted)
}
yml1, err := yaml.Marshal(av.Interface())
if err != nil {
return false, err
}
yml2, err := yaml.Marshal(bv.Interface())
if err != nil {
return false, err
}
return string(yml1) == string(yml2), nil
}
示例14: UpdateAuth
func (self *Api) UpdateAuth(token *oauth2.Token) error {
// Save auth data
log.WithFields(log.Fields{"Target": self.AuthFile}).Debug("Saving authentication data")
yml, err := yaml.Marshal(&token)
if err != nil {
return err
}
err = ioutil.WriteFile(self.AuthFile, yml, 0600)
if err != nil {
return err
}
return nil
}
示例15: WriteConfig
// WriteConfig writes config from file to structure
func WriteConfig(config Config, fname string) error {
yamlConfig := &yamlConfig{}
yamlConfig.Services = make([]yamlServiceConfig, len(config.Services))
i := 0
for k, v := range config.Services {
ysc := &yamlServiceConfig{}
ysc.Service = k
ysc.Api = v.Common.Api
ysc.Config = v.ServiceSpecific
yamlConfig.Services[i] = *ysc
i++
}
b, err := yaml.Marshal(yamlConfig)
if err != nil {
return err
}
return ioutil.WriteFile(fname, b, 0777)
}