configurable

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: May 3, 2018 License: Apache-2.0 Imports: 1 Imported by: 3

Documentation

Overview

Package configurable exposes methods for initializing configuration structs.

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func InitConfig

func InitConfig(config Configurable)

Initializes the configuration

Example (DefaultIsAppliedIfThereIsNoEnvVar)
package main

import (
	"fmt"
	"os"

	"gopkg.in/src-d/framework.v0/configurable"
)

func main() {
	type mockTestConfig struct {
		configurable.BasicConfiguration
		MyFieldFromEnvWithDefault string `envconfig:"MY_WINNING_ENV_VAR" default:"defaulted"`
	}

	os.Unsetenv("MY_WINNING_ENV_VAR")
	config := &mockTestConfig{}

	configurable.InitConfig(config)

	fmt.Println(config.MyFieldFromEnvWithDefault)
}
Output:

defaulted
Example (EnvironmentValueWinsEvenIfThereIsAlsoDefault)
package main

import (
	"fmt"
	"os"

	"gopkg.in/src-d/framework.v0/configurable"
)

func main() {
	type mockTestConfig struct {
		configurable.BasicConfiguration
		MyFieldFromEnvWithDefault string `envconfig:"MY_WINNING_ENV_VAR" default:"defaulted"`
	}

	expectedString := "my expected string"
	os.Setenv("MY_WINNING_ENV_VAR", expectedString)
	defer os.Unsetenv("MY_WINNING_ENV_VAR")
	config := &mockTestConfig{}

	configurable.InitConfig(config)

	fmt.Println(config.MyFieldFromEnvWithDefault)
}
Output:

my expected string
Example (InitializesFieldFromEnvironment)
package main

import (
	"fmt"
	"os"

	"gopkg.in/src-d/framework.v0/configurable"
)

func main() {
	type mockTestConfig struct {
		configurable.BasicConfiguration
		MyFieldFromEnv string `envconfig:"MY_ENV_VAR"`
	}

	expectedString := "my expected string"
	os.Setenv("MY_ENV_VAR", expectedString)
	defer os.Unsetenv("MY_ENV_VAR")
	config := &mockTestConfig{}

	configurable.InitConfig(config)

	fmt.Println(config.MyFieldFromEnv)
}
Output:

my expected string
Example (InitializesFieldWithDefault)
package main

import (
	"fmt"

	"gopkg.in/src-d/framework.v0/configurable"
)

func main() {
	type mockTestConfig struct {
		configurable.BasicConfiguration
		MyFieldWithDefault string `default:"mydefault"`
	}

	config := &mockTestConfig{}

	configurable.InitConfig(config)

	fmt.Println(config.MyFieldWithDefault)
}
Output:

mydefault
Example (InitializesFieldWithoutDefault)
package main

import (
	"fmt"

	"gopkg.in/src-d/framework.v0/configurable"
)

func main() {
	type mockTestConfig struct {
		configurable.BasicConfiguration
		MyFieldWithoutDefault string
	}

	config := &mockTestConfig{}

	configurable.InitConfig(config)

	fmt.Println(config.MyFieldWithoutDefault)
}
Output:

Types

type BasicConfiguration

type BasicConfiguration struct {
}

BasicConfiguration is the default configuration

Example
package main

import (
	"fmt"

	"gopkg.in/src-d/framework.v0/configurable"
)

func main() {
	type complexConfiguration struct {
		configurable.BasicConfiguration
		Value string `default:"hola"`
	}

	config := &complexConfiguration{}

	configurable.InitConfig(config)

	fmt.Println(config.Value)
}
Output:

hola
var (
	// Initialized BasicConfiguration
	Config *BasicConfiguration = &BasicConfiguration{}
)

func (*BasicConfiguration) Init

func (c *BasicConfiguration) Init()

Init initializes BasicConfiguration

type Configurable

type Configurable interface {
	Init()
}

Configurable allows InitConfig to properly configure the config struct using environment variables and default values.

Jump to

Keyboard shortcuts

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