utils: github.com/juju/utils/featureflag Index | Files

package featureflag

import "github.com/juju/utils/featureflag"

The featureflag package gives other parts of Juju the ability to easily check to see if a feature flag has been defined. Feature flags give the Juju developers a way to add new commands or features to Juju but hide them from the general user-base while things are still in development.

Feature flags are defined through environment variables, and the value is comma separated.

# this defines two flags: "special" and "magic"
export JUJU_SOME_ENV_VAR=special,magic

The feature flags should be read and identified at program initialisation time using an init function. This function should call the `SetFlagsFromEnvironment` or the `SetFlagsFromRegistry` function.

Index

Package Files

flags.go flags_unix.go

func All Uses

func All() []string

All returns all the current feature flags.

func AsEnvironmentValue Uses

func AsEnvironmentValue() string

AsEnvironmentValue returns a single string suitable to be assigned into an environment value that will be parsed into the same set of values currently set.

func Enabled Uses

func Enabled(flag string) bool

Enabled is used to determine if a particular feature flag is enabled for the process.

func SetFlagsFromEnvironment Uses

func SetFlagsFromEnvironment(envVarName string)

SetFlagsFromEnvironment populates the global set from the environment. White space between flags is ignored, and the flags are lower cased. Under normal circumstances this method is only ever called from the init function.

NOTE: since SetFlagsFromEnvironment should only ever called during the program startup (or tests), and it is serialized by the runtime, we don't use any mutux when setting the flag set. Should this change in the future, a mutex should be used.

func String Uses

func String() string

String provides a nice human readable string for the feature flags that are set.

Package featureflag imports 6 packages (graph) and is imported by 484 packages. Updated 2017-03-19. Refresh now. Tools for package owners.