8000 GitHub - Gobusters/ectoenv: EctoEnv is a Go library for binding environment variables to struct fields. It supports various data types, default values, and automatic refreshing. The library simplifies configuration management in Go applications by using struct tags to define environment variable mappings, making it easy to load and update configuration from the environment.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

EctoEnv is a Go library for binding environment variables to struct fields. It supports various data types, default values, and automatic refreshing. The library simplifies configuration management in Go applications by using struct tags to define environment variable mappings, making it easy to load and update configuration from the environment.

License

Notifications You must be signed in to change notification settings

Gobusters/ectoenv

Repository files navigation

EctoEnv

The ectoenv package is designed to simplify the process of binding environment variables to struct fields in Go. It uses struct tags to map environment variables to struct fields, allowing for easy configuration of your applications using environment variables.

Installation

To use the ectoenv package, first install it using:

go get github.com/Gobusters/ectoenv

Usage

To use ectoenv, import it into your Go file:

import "github.com/Gobusters/ectoenv"

Defining Structs

Define your configuration struct with the env and env-default struct tags to specify which environment variables should be bound to which struct fields. The env tag is used to specify the name of the environment variable, and env-default is used for a default value if the environment variable is not set.

Example:

type Config struct {
    Host string `env:"HOST"`
    Port int `env:"PORT" env-default:"8080"`
    Debug bool `env:"DEBUG" env-default:"false"`
    Database string `env:"DATABASE_URL"`
}

Using BindEnv

To bind environment variables to your struct, create an instance of your struct and pass a pointer to it to the BindEnv function.

Example:

func main() {
    var cfg Config
    err := ectoenv.BindEnv(&cfg)
    if err != nil {
        log.Fatalf("Failed to bind environment variables: %v", err)
    }

    // Use cfg...
}

Supported Types

The ectoenv package currently supports the following field types:

  • string
  • 87BA int
  • bool
  • float64
  • Slices of the above types (e.g., []string, []int)
  • Nested structs

Error Handling

The BindEnv function will return an error if:

  • The provided value is not a non-nil pointer to a struct.
  • An environment variable is set with a value that cannot be converted to the field type.
  • Any other reflection-related error occurs during the process.

Using BindEnvWithAutoRefresh

BindEnvWithAutoRefresh extends the functionality of BindEnv by adding automatic refreshing of environment variables at a specified interval. This is particularly useful for long-running applications where environment variables might change over time.

Functionality

BindEnvWithAutoRefresh sets the values of the provided struct based on the values of the environment variables defined in the struct's tags and periodically refreshes these values.

Parameters

  • v: A non-nil pointer to a struct.
  • interval: The interval to refresh the environment variables.

Usage

To use BindEnvWithAutoRefresh, pass your configuration struct and the desired refresh interval:

func main() {
    var cfg Config
    interval := time.Duration(30) * time.Second

    err := ectoenv.BindEnvWithAutoRefresh(&cfg, interval)
    if err != nil {
        log.Fatalf("Failed to bind and auto-refresh environment variables: %v", err)
    }

    // Your application logic...

}

Contributing

Contributions to the ectoenv package are welcome! Please feel free to submit issues and pull requests to the repository.

License

This package is released under the MIT License.

About

EctoEnv is a Go library for binding environment variables to struct fields. It supports various data types, default values, and automatic refreshing. The library simplifies configuration management in Go applications by using struct tags to define environment variable mappings, making it easy to load and update configuration from the environment.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published
0