package
0.195.1
Repository: https://github.com/influxcommunity/flux.git
Documentation: pkg.go.dev

# README

Feature Library

The feature library is a Go library to provide feature flagging capabilities to Go programs. It is common in Go programs to introduce new functionality or performance improvements. But, it is also a common problem that changes to code can potentially have unintended consequences or bugs that will sometimes reach customers. In order to control the functionality of the code at runtime, some form of feature flag is used. In its most basic form, a feature flag might just be some configuration option in the server configuration or an environment variable that is set on the deployment.

In some circumstances, more fine-controlled or responsive feature flagging is required. This library is intended to provide this more fine-controlled and responsive feature flagging.

Flags

A Flag is a definition of a feature flag. It is represented by a human-readable name, a description of the flag, the programmatic key, and a default value. It also contains metadata for whether the flag is intended to be exposed to an end-user, the expected lifetime of the flag (temporary or permanent), and a contact for the person, team, or other entity that added the feature flag.

These flags can be represented in YAML form as the following:

- name: My Feature
  description: My feature is awesome
  key: myFeature
  default: false
  expose: true
  contact: My Name
  lifetime: temporary

The flag type is inferred from the default value. In this case, the default value is a boolean so this is a boolean flag. The feature command can be used to process the above YAML and to generate the code for a list of feature flags.

$ mkdir feature/
$ feature -in flags.yml -out feature/feature.go

From our backend code, we can check the feature flag by importing the package for the generated code and using the following code:

if feature.MyFeature.Enabled(ctx) {
  // new code...
} else {
  // new code...
}

To toggle the flag from the default value, the Flagger is used.

Flagger

The Flagger is the component that checks the value for a feature flag. This interface will be implemented by the specific application depending on how it wants to expose feature flags. A Flagger backend can be static or dynamic depending on the underlying implementation.

# Packages

No description provided by the author

# Functions

GetFlagger returns the Flagger for this context or the default flagger.
Inject will inject the Flagger into the context.
MakeBase constructs a flag.
MakeBoolFlag returns a string flag with the given Base and default.
MakeFlag constructs a Flag.
MakeFloatFlag returns a string flag with the given Base and default.
MakeIntFlag returns a string flag with the given Base and default.
MakeStringFlag returns a string flag with the given Base and default.
SetMetrics sets the metric store for feature flags.

# Structs

Base implements the base of the Flag type.
BoolFlag implements Flag for boolean values.
FloatFlag implements Flag for float values.
IntFlag implements Flag for integer values.
StringFlag implements Flag for string values.

# Interfaces

Flag represents a generic feature flag with a key and a default.
Flagger returns flag values.
No description provided by the author