config

package
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 9, 2023 License: Apache-2.0 Imports: 6 Imported by: 35

README

go-micro/config

Package go-micro/config is a pluggable config provider for loosely coupled components.

It provides 2 main functions

config.Read

Read reads urls into []source.Data where Data is basicaly map[string]any.

This is done over config/source.Plugins and currently there are 3 Plugins for config.source:

  • cli provides config from cli/env sources.
  • file provides config from file sources.
  • http provides config from http sources.

It's straight forward to write Plugins for config.source and we will provide more:

  • nats
  • etcd
  • consul

An example:

package main

import (
    "log"
    "net/url"

    "github.com/go-orb/go-orb/config"
    _ "github.com/go-orb/plugins/codecs/json/v5"
    _ "github.com/go-orb/plugins/codecs/yaml/v5"
    _ "github.com/go-orb/plugins/config/source/file/v5"
    _ "github.com/go-orb/plugins/config/source/http/v5"
)

func main() {
    // https://raw.githubusercontent.com/go-micro/plugins/main/config/tests/data/set1/registry1.yaml
    u1, err := url.Parse("./data/set1/registry1.yaml")
    if err != nil {
        log.Fatal(err)
    }

    u2, err := url.Parse("https://raw.githubusercontent.com/go-micro/plugins/main/config/tests/data/set1/registry2.json")
    if err != nil {
        log.Fatal(err)
    }

    datas, err := config.Read([]*url.URL{u1, u2}, []string{"app"})
    if err != nil {
        log.Fatal(err)
    }
}

config.Parse

Parse parses the config from config.Read into the given struct.

Example:

    // extend the config.Read example here

    //
    // All from here is in the plugin itself.
    //
    cfg := newRegistryMdnsConfig()
    err := config.Parse([]string{"app", "registry"}, datas, cfg)
    if err != nil {
        log.Fatal(err)
    }

Authors

License

go-micro is Apache 2.0 licensed.

Documentation

Overview

Package config provides config handling for go-micro.

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrUnknownPlugin happens when there's no config factory for the given plugin.
	ErrUnknownPlugin = errors.New("unknown config given. Did you import the config plugin?")

	// ErrNotExistent happens when a config key is not existent.
	ErrNotExistent = errors.New("no such config key")

	// ErrTypesDontMatch happens when types don't match during Get[T]().
	ErrTypesDontMatch = errors.New("config key requested type and actual type don't match")

	// ErrUnknownScheme happens when you didn't import the plugin for the scheme or the scheme is unknown.
	ErrUnknownScheme = errors.New("unknown config source scheme. Did you register the config source plugin for your scheme?")

	// ErrFileNotFound happens when theres no file.
	ErrFileNotFound = errors.New("file not found")

	// ErrCodecNotFound happens when the required codec is not found.
	ErrCodecNotFound = errors.New("marshaler for codec not found. Did you import the codec plugin for your file type?")
)

Functions

func Get

func Get[T any](data map[string]any, key string, def T) (T, error)

Get returns either the value of "key" in "data" or the default value "def". If types don't match it returns ErrTypesDontMatch. If key hasn't been found it returns ErrNotExistent as well as the default value "def".

It supports the following datatypes:

  • any non-container (string/float64/uvm.)
  • []string slice
  • []any slice
  • map[string]string
  • map[string]any

func Parse

func Parse(sections []string, configs types.ConfigData, target any) error

Parse parses the config from config.Read into the given struct. Param target should be a pointer to the config to parse into.

func Read

func Read(urls []*url.URL, prependSections []string) (types.ConfigData, error)

Read reads urls into []Data where Data is map[string]any.

By default it will error out if any of these config URLs fail, but you can ignore errors for a single url by adding "?ignore_error=true".

prependSections is for url's that don't support sections (cli for example), their result will be prepended, also you can add sections to a single url with "?add_section=true".

Types

This section is empty.

Directories

Path Synopsis
Package source provides a base for all config sources.
Package source provides a base for all config sources.
cli
Package cli provides the CLI config component of go-micro.
Package cli provides the CLI config component of go-micro.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL