/viperx

Viper extensions

Primary LanguageGoMIT LicenseMIT

ViperX: Viper extensions

GitHub Workflow Status Codecov Go Report Card Go Version PkgGoDev FOSSA Status

This library adds some extensions to the core Viper package.

Installation

$ go get github.com/sagikazarmark/viperx

Usage

Remote config provider registry

Package remote provides a remote provider registry.

package main

import (
	"github.com/spf13/viper"

	vaultremote "github.com/sagikazarmark/viperx/remote"
)

func main() {
	vaultremote.RegisterConfigProvider("vault", &myVaultProvider{})

	_ = viper.AddRemoteProvider("vault", "endpoint", "path")
}

Hashicorp Vault Remote config provider

package main

import (
	"github.com/spf13/viper"

	"github.com/sagikazarmark/viperx/remote/vault"
)

func main() {
	_ = viper.AddRemoteProvider("vault", "endpoint", "path")
	viper.SetConfigType("json") // This is required for the vault provider

	_ = viper.ReadRemoteConfig()
}

Roadmap

  • Add etcd remote provider support (Using Go CDK secrets?)
  • Add consul remote provider support (Using Go CDK secrets?)
  • Add a friendly (declarative?) API for defining configuration

Development

Contributions are welcome! :)

  1. Clone the repository
  2. Make changes on a new branch
  3. If you changed any dependencies or added new packages run: ./pleasew tidy
  4. Run the test suite:
    ./pleasew test
    ./pleasew lint
  5. Commit, push and open a PR

License

The MIT License (MIT). Please see License File for more information.

FOSSA Status