當前位置: 首頁>>代碼示例>>Golang>>正文


Golang toml.MetaData類代碼示例

本文整理匯總了Golang中github.com/BurntSushi/toml.MetaData的典型用法代碼示例。如果您正苦於以下問題:Golang MetaData類的具體用法?Golang MetaData怎麽用?Golang MetaData使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


在下文中一共展示了MetaData類的12個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: validateConfig

//check validation of config
func validateConfig(conf *Config, md *toml.MetaData) error {
	//for protection when debugging on non production environment
	var errStrings []string

	format := "[%s]"
	inValid := false
	for _, keys := range checkTomlKeys {
		if !md.IsDefined(keys...) {
			switch len(keys) {
			case 1:
				format = "[%s]"
			case 2:
				format = "[%s] %s"
			case 3:
				format = "[%s.%s] %s"
			default:
				//invalid check string
				inValid = true
				break
			}
			keysIfc := u.SliceStrToInterface(keys)
			errStrings = append(errStrings, fmt.Sprintf(format, keysIfc...))
		}
	}

	// Error
	if inValid {
		return errors.New("Error: Check Text has wrong number of parameter")
	}
	if len(errStrings) != 0 {
		return fmt.Errorf("Error: There are lacks of keys : %#v \n", errStrings)
	}

	return nil
}
開發者ID:hiromaily,項目名稱:go-book-teacher,代碼行數:36,代碼來源:config.go

示例2: printTypes

func printTypes(md toml.MetaData) {
	tabw := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0)
	for _, key := range md.Keys() {
		fmt.Fprintf(tabw, "%s%s\t%s\n",
			strings.Repeat("    ", len(key)-1), key, md.Type(key...))
	}
	tabw.Flush()
}
開發者ID:gophergala2016,項目名稱:source,代碼行數:8,代碼來源:main.go

示例3: analyzeFmdConf

func analyzeFmdConf(config map[string]toml.Primitive, md *toml.MetaData) error {
	if section, ok := config["ngxfmd"]; ok {
		err := md.PrimitiveDecode(section, fmConf)
		if err != nil {
			fmt.Println(err.Error())
			return err
		}
		fmt.Printf("(%+v)\n", *fmConf)
		return nil
	} else {
		fmt.Println("analyze nginx files manager configuration failed")
		return errors.New("does not specify fmd section configuration")
	}
}
開發者ID:cxwshawn,項目名稱:ornet,代碼行數:14,代碼來源:ngxfm.go

示例4: analyzeCmddConf

func analyzeCmddConf(config map[string]toml.Primitive, md *toml.MetaData) error {
	if section, ok := config["cmdd"]; ok {
		err := md.PrimitiveDecode(section, cmddConfig)
		if err != nil {
			fmt.Println(err.Error())
			return err
		}
		fmt.Printf("(%+v)\n", *cmddConfig)
		return nil
	} else {
		fmt.Println("analyze cmddConfig failed")
		return errors.New("does not specify cmmd section configuration")
	}
}
開發者ID:cxwshawn,項目名稱:ornet,代碼行數:14,代碼來源:main.go

示例5: validateScriptsConf

func validateScriptsConf(scripts *ScriptsConf, meta toml.MetaData) error {
	if scripts == nil {
		return nil
	}
	if !meta.IsDefined("scripts", "path") {
		return errors.New("scripts section provided without path.")
	}
	if !meta.IsDefined("scripts", "run_interval_ms") {
		return errors.New("scripts section provided without run_interval_ms.")
	}
	if scripts.RunIntervalMS <= 0 {
		return errors.New("scripts.run_interval_ms must be positive")
	}
	return nil
}
開發者ID:sdgdsffdsfff,項目名稱:gost,代碼行數:15,代碼來源:conf.go

示例6: loadSystemConfig

func loadSystemConfig(conf string, isFileName bool) (*SystemConf, error) {
	sc := newSystemConf()
	var decodeMeta toml.MetaData
	var err error
	if isFileName {
		decodeMeta, err = toml.DecodeFile(conf, &sc)
	} else {
		decodeMeta, err = toml.Decode(conf, &sc)
	}
	if err != nil {
		return sc, err
	}
	if len(decodeMeta.Undecoded()) > 0 {
		return sc, fmt.Errorf("undecoded fields in system configuration: %v", decodeMeta.Undecoded())
	}
	sc.md = decodeMeta
	return sc, nil
}
開發者ID:mhenderson-so,項目名稱:bosun,代碼行數:18,代碼來源:system.go

示例7: main

func main() {
	var cfg config
	var md toml.MetaData
	md, err := toml.DecodeFile(configFile, &cfg)
	if err != nil {
		log.Fatal(err)
	}

	for _, o := range cfg.Outs {
		out_plugin := plugin.GetOut(o.Plugin)
		out_cfg_prim := o.Config
		var plugin_conf = out_plugin.GetConfig()
		md.PrimitiveDecode(out_cfg_prim, plugin_conf)
	}

	out := plugin.GetOut("outfile")
	result := out.Write("somestring")
	fmt.Println(result)
}
開發者ID:pik4ez,項目名稱:drysh,代碼行數:19,代碼來源:main.go

示例8: InitHandlerConf

func InitHandlerConf(confs map[string]toml.Primitive, md *toml.MetaData) error {
	var err error
	for k, handler := range CmdHandlers {
		if conf, ok := confs[k]; ok {
			handlerConf := handler.ConfigStruct()
			err = md.PrimitiveDecode(conf, handlerConf)
			if err != nil {
				cmdlog.EPrintln(err.Error())
				return err
			}

			err = handler.Init(handlerConf)
			if err != nil {
				cmdlog.EPrintln(err.Error())
				return err
			}
		}
	}
	return err
}
開發者ID:cxwshawn,項目名稱:ornet,代碼行數:20,代碼來源:cmds.go

示例9: parseConfig

func parseConfig(configFile string) map[string]*Service {
	var config Services
	var md toml.MetaData
	var err error
	if md, err = toml.DecodeFile(configFile, &config); err != nil {
		log.Fatal(err)
	}
	services := make(map[string]*Service)

	for name, serv := range config {
		s := NewService()
		s.Name = name

		services[name] = s

		for _, k := range md.Keys() {
			ks := strings.Split(k.String(), ".")
			if len(ks) > 1 && ks[0] == name {
				switch ks[1] {
				case "srcport":
					s.Srcport = serv.Srcport
				case "srcflags":
					s.Srcflags = serv.Srcflags
				case "srcproto":
					s.Srcproto = serv.Srcproto
				case "dsthost":
					s.Dsthost = serv.Dsthost
				case "dstproto":
					s.Dstproto = serv.Dstproto
				case "dstport":
					s.Dstport = serv.Dstport
				case "enabled":
					s.Enabled = serv.Enabled
				}
			}
		}
	}

	log.Println("Found", len(services), "services")
	return services
}
開發者ID:pho,項目名稱:socatgun,代碼行數:41,代碼來源:main.go

示例10: validateOSStatsConf

func validateOSStatsConf(osStats *OSStatsConf, meta toml.MetaData) error {
	if osStats == nil {
		return nil
	}
	if meta.IsDefined("os_stats", "check_interval_ms") {
		if osStats.CheckIntervalMS <= 0 {
			return errors.New("check_interval_ms must be positive")
		}
	}
	if err := validateMemConf(osStats.Mem); err != nil {
		return err
	}
	if err := validateCPUConf(osStats.CPU); err != nil {
		return err
	}
	// For now, any parseable NetConf is valid.
	for _, diskConf := range osStats.Disk {
		if err := validateDiskConf(diskConf); err != nil {
			return err
		}
	}
	return nil
}
開發者ID:sdgdsffdsfff,項目名稱:gost,代碼行數:23,代碼來源:conf.go

示例11: LoadContainerSettings

//Loads a container configuration object, overriding a base
//This function prevents empty TOML keys (anything you didn't specify) from overriding a preset value.
func LoadContainerSettings(base *Container, inc *Container, meta *toml.MetaData, key ...string) {

	if meta.IsDefined(append(key, "command")...) {
		base.Command = inc.Command
	}

	if meta.IsDefined(append(key, "folder")...) {
		base.Folder = inc.Folder
	}

	if meta.IsDefined(append(key, "privileged")...) {
		base.Privileged = inc.Privileged
	}

	if meta.IsDefined(append(key, "mounts")...) {
		base.Mounts = append(base.Mounts, inc.Mounts...)
	}

	if meta.IsDefined(append(key, "ports")...) {
		base.Ports = append(base.Ports, inc.Ports...)
	}

	if meta.IsDefined(append(key, "dns")...) {
		base.DNS = append(base.DNS, inc.DNS...)
	}

	if meta.IsDefined(append(key, "attach")...) {
		base.Attach = inc.Attach
	}

	if meta.IsDefined(append(key, "purge")...) {
		base.Purge = inc.Purge
	}

	if meta.IsDefined(append(key, "environment")...) {
		base.Environment = append(base.Environment, inc.Environment...)
	}
}
開發者ID:polydawn,項目名稱:hroot,代碼行數:40,代碼來源:parse.go

示例12: SetDefaultConfigValues

func SetDefaultConfigValues(md toml.MetaData, bt *Bgp) error {
	neighbors := []neighbor{}
	global := make(map[string]bool)

	for _, key := range md.Keys() {
		if !strings.HasPrefix(key.String(), "Global") {
			continue
		}
		if key.String() != "Global" {
			global[key.String()] = true
		}
	}

	if _, ok := global["Global.AfiSafis.AfiSafiList"]; !ok {
		bt.Global.AfiSafis.AfiSafiList = []AfiSafi{
			AfiSafi{AfiSafiName: "ipv4-unicast"},
			AfiSafi{AfiSafiName: "ipv6-unicast"},
			AfiSafi{AfiSafiName: "l3vpn-ipv4-unicast"},
			AfiSafi{AfiSafiName: "l3vpn-ipv6-unicast"},
			AfiSafi{AfiSafiName: "l2vpn-evpn"},
			AfiSafi{AfiSafiName: "encap"},
			AfiSafi{AfiSafiName: "rtc"},
			AfiSafi{AfiSafiName: "ipv4-flowspec"},
			AfiSafi{AfiSafiName: "l3vpn-ipnv4-flowspec"},
		}
	}

	nidx := 0
	for _, key := range md.Keys() {
		if !strings.HasPrefix(key.String(), "Neighbors.NeighborList") {
			continue
		}
		if key.String() == "Neighbors.NeighborList" {
			neighbors = append(neighbors, neighbor{attributes: make(map[string]bool)})
			nidx++
		} else {
			neighbors[nidx-1].attributes[key.String()] = true
		}
	}
	for i, n := range neighbors {
		neighbor := &bt.Neighbors.NeighborList[i]
		timerConfig := &neighbor.Timers.TimersConfig

		if _, ok := n.attributes["Neighbors.NeighborList.Timers.TimersConfig.ConnectRetry"]; !ok {
			timerConfig.HoldTime = float64(DEFAULT_CONNECT_RETRY)
		}
		if _, ok := n.attributes["Neighbors.NeighborList.Timers.TimersConfig.HoldTime"]; !ok {
			timerConfig.HoldTime = float64(DEFAULT_HOLDTIME)
		}
		if _, ok := n.attributes["Neighbors.NeighborList.Timers.TimersConfig.KeepaliveInterval"]; !ok {
			timerConfig.KeepaliveInterval = timerConfig.HoldTime / 3
		}

		if _, ok := n.attributes["Neighbors.NeighborList.Timers.TimersConfig.IdleHoldTimeAfterReset"]; !ok {
			timerConfig.IdleHoldTimeAfterReset = float64(DEFAULT_IDLE_HOLDTIME_AFTER_RESET)
		}

		if _, ok := n.attributes["Neighbors.NeighborList.AfiSafis.AfiSafiList"]; !ok {
			if neighbor.NeighborConfig.NeighborAddress.To4() != nil {
				neighbor.AfiSafis.AfiSafiList = []AfiSafi{
					AfiSafi{AfiSafiName: "ipv4-unicast"}}
			} else {
				neighbor.AfiSafis.AfiSafiList = []AfiSafi{
					AfiSafi{AfiSafiName: "ipv6-unicast"}}
			}
		} else {
			for _, rf := range neighbor.AfiSafis.AfiSafiList {
				_, err := bgp.GetRouteFamily(rf.AfiSafiName)
				if err != nil {
					return err
				}
			}
		}

		if _, ok := n.attributes["Neighbors.NeighborList.NeighborConfig.PeerType"]; !ok {
			if neighbor.NeighborConfig.PeerAs != bt.Global.GlobalConfig.As {
				neighbor.NeighborConfig.PeerType = PEER_TYPE_EXTERNAL
			} else {
				neighbor.NeighborConfig.PeerType = PEER_TYPE_INTERNAL
			}
		}
	}
	for _, r := range bt.RpkiServers.RpkiServerList {
		if r.RpkiServerConfig.Port == 0 {
			r.RpkiServerConfig.Port = bgp.RPKI_DEFAULT_PORT
		}
	}
	return nil
}
開發者ID:gitter-badger,項目名稱:gobgp,代碼行數:89,代碼來源:default.go


注:本文中的github.com/BurntSushi/toml.MetaData類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。