package
0.1.0
Repository: https://github.com/xmlking/grpc-starter-kit.git
Documentation: pkg.go.dev

# README

Config

This will configures configurator via environment variables and load config.*.yml files into a package level struct variable. Once loaded, you can use packet level helper methods to retrieve config data.

Usage

Customize Configurator at runtime with Environment Variables

Environment Variables

export CONFIG_FILES=/config/config.yml
# (or) export CONFIG_FILES=/config/config.yml,/config/config.pg.yml
export CONFIG_DEBUG_MODE=true
export CONFIG_VERBOSE_MODE=true
export CONFIG_SILENT_MODE=true
export CONFIG_USE_PKGER=true
export CONFIG_ENV=prod

export CONFIG_ENV_PREFIX=APP
export APP_FEATURES_TLS_ENABLED=true

# for example
CONFIG_SERVICES_GREETER_ENDPOINT=dns:///localhost:8088 ./build/greeter-service
CONFIG_ENV_PREFIX=APP APP_SERVICES_GREETER_ENDPOINT=dns:///localhost:8088 ./build/greeter-service
CONFIG_ENV_PREFIX=APP APP_FEATURES_TLS_ENABLED=true ./build/greeter-service
CONFIG_ENV=prod ./build/greeter-service

Examples

Import shared/config package. It will be self-initialized.

import  "github.com/xmlking/grpc-starter-kit/internal/config"

Once config is initialized, then you can use github.com/xmlking/grpc-starter-kit/internal/config package's helper methods retrieve config items.

import (
    _ "github.com/xmlking/grpc-starter-kit/internal/config"
)

func ExampleGetConfig_check_defaults() {
	fmt.Println(config.GetConfig().Services.Account.Endpoint)
	fmt.Println(config.GetConfig().Services.Account.Version)
	fmt.Println(config.GetConfig().Services.Account.Deadline)

	// Output:
	// dns:///account.test:8080
	// v0.1.0
	// 8888
}

You can also use Configor to load any yaml files into your Struct.

import (
	"github.com/xmlking/grpc-starter-kit/internal/config"
)

func TestOverwriteConfigurationWithEnvironmentWithDefaultPrefix(t *testing.T) {
	os.Setenv("CONFIG_SERVICES_ACCOUNT_ENDPOINT", "dns:///localhost:8088")
	defer os.Setenv("CONFIG_SERVICES_ACCOUNT_ENDPOINT", "")

	var cfg config.Configuration
	config.Configor.Load(&cfg, "/config/config.yml")

	t.Logf("Environment: %s", config.Configor.GetEnvironment())
	t.Log(cfg.Services.Account)
	if cfg.Services.Account.Endpoint != "dns:///localhost:8088" {
		t.Errorf("Account Endpoint is %s, want %s", cfg.Services.Account.Endpoint, "dns:///localhost:8088")
	}
}

Test

CONFIG_DEBUG_MODE=true go test -v ./internal/config/... -count=1

# Functions

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Variables

BuildDate is populated by govvv.
GitBranch is populated by govvv.
GitCommit is populated by govvv.
GitState is populated by govvv.
GitSummary is populated by govvv.
Version is populated by govvv in compile-time.

# Structs

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author