forked from TrueCloudLab/rclone
Use a vendor directory for repeatable builds - fixes #816
This is using godep to manage the vendor directory.
This commit is contained in:
parent
01be5bff02
commit
f7af730b50
637 changed files with 247384 additions and 11 deletions
117
vendor/github.com/Unknwon/goconfig/write.go
generated
vendored
Normal file
117
vendor/github.com/Unknwon/goconfig/write.go
generated
vendored
Normal file
|
@ -0,0 +1,117 @@
|
|||
// Copyright 2013 Unknwon
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License"): you may
|
||||
// not use this file except in compliance with the License. You may obtain
|
||||
// a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
// License for the specific language governing permissions and limitations
|
||||
// under the License.
|
||||
|
||||
package goconfig
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"io"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Write spaces around "=" to look better.
|
||||
var PrettyFormat = true
|
||||
|
||||
// SaveConfigData writes configuration to a writer
|
||||
func SaveConfigData(c *ConfigFile, out io.Writer) (err error) {
|
||||
equalSign := "="
|
||||
if PrettyFormat {
|
||||
equalSign = " = "
|
||||
}
|
||||
|
||||
buf := bytes.NewBuffer(nil)
|
||||
for _, section := range c.sectionList {
|
||||
// Write section comments.
|
||||
if len(c.GetSectionComments(section)) > 0 {
|
||||
if _, err = buf.WriteString(c.GetSectionComments(section) + LineBreak); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if section != DEFAULT_SECTION {
|
||||
// Write section name.
|
||||
if _, err = buf.WriteString("[" + section + "]" + LineBreak); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
for _, key := range c.keyList[section] {
|
||||
if key != " " {
|
||||
// Write key comments.
|
||||
if len(c.GetKeyComments(section, key)) > 0 {
|
||||
if _, err = buf.WriteString(c.GetKeyComments(section, key) + LineBreak); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
keyName := key
|
||||
// Check if it's auto increment.
|
||||
if keyName[0] == '#' {
|
||||
keyName = "-"
|
||||
}
|
||||
//[SWH|+]:支持键名包含等号和冒号
|
||||
if strings.Contains(keyName, `=`) || strings.Contains(keyName, `:`) {
|
||||
if strings.Contains(keyName, "`") {
|
||||
if strings.Contains(keyName, `"`) {
|
||||
keyName = `"""` + keyName + `"""`
|
||||
} else {
|
||||
keyName = `"` + keyName + `"`
|
||||
}
|
||||
} else {
|
||||
keyName = "`" + keyName + "`"
|
||||
}
|
||||
}
|
||||
value := c.data[section][key]
|
||||
// In case key value contains "`" or "\"".
|
||||
if strings.Contains(value, "`") {
|
||||
if strings.Contains(value, `"`) {
|
||||
value = `"""` + value + `"""`
|
||||
} else {
|
||||
value = `"` + value + `"`
|
||||
}
|
||||
}
|
||||
|
||||
// Write key and value.
|
||||
if _, err = buf.WriteString(keyName + equalSign + value + LineBreak); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Put a line between sections.
|
||||
if _, err = buf.WriteString(LineBreak); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if _, err := buf.WriteTo(out); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// SaveConfigFile writes configuration file to local file system
|
||||
func SaveConfigFile(c *ConfigFile, filename string) (err error) {
|
||||
// Write configuration file by filename.
|
||||
var f *os.File
|
||||
if f, err = os.Create(filename); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := SaveConfigData(c, f); err != nil {
|
||||
return err
|
||||
}
|
||||
return f.Close()
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue