Skip to content

Latest commit

 

History

History
197 lines (144 loc) · 9.16 KB

File metadata and controls

197 lines (144 loc) · 9.16 KB

GO Feature Flag Command Line

What is GO Feature Flag Command Line?

The GO Feature Flag Command Line is a CLI tool to interact with GO Feature Flag in your terminal.
For now it supports the following commands:

  • evaluate to evaluate feature flags directly in your terminal
  • lint to validate a configuration file format.

How to install the cli

Install using Homebrew (mac and linux)

brew tap thomaspoignant/homebrew-tap
brew install go-feature-flag-cli

Install using docker

docker pull gofeatureflag/go-feature-flag-cli

More information about the usage of the container in the dockerhub page.

How to use the command line

go-feature-flag-cli is a command line tool.

How to evaluate a flag

The evaluate command allows you to evaluate a feature flag or inspect the configuration of your retriever using --check-mode

go-feature-flag-cli evaluate [OPTIONS]

Key Flags

Flag Shorthand Description Default
--kind k Kind of configuration source. Determines where to read your flags from file
--config c Path to the local flag configuration file (⚠️ deprecated, use --path instead) ""
--format f Format of your input file (YAML, JSON or TOML) yaml
--flag Name of the flag to evaluate ""
--timeout Timeout in seconds to access your configuration file 0
--ctx Evaluation context as a json string {}
--check-mode Check only mode - when set, the command will not perform any
evaluation and returns the configuration of spanned retriever
false

Supported values for --kind are:

  • file
  • http
  • github
  • gitlab
  • s3
  • googleStorage
  • configmap (kubernetes)
  • mongodb
  • bitbucket
  • azureBlobStorage
  • postgresql

Caution: We do not support redis retriever as for now due to: thomaspoignant#4023.

Retriever specific flags

The aforementioned --kind parameter is used to determine the retriever to use. The semantic meaning of other flags depends on that one, for example --path parameter is used to specify local file when --kind being file but when --kind being github it is used to specify the path to the remote file.

File

Flag Description Default
--path Path to the local flag configuration file ""

HTTP

Flag Description Default
--url URL of the remote flag configuration file ""
--method HTTP method to access your configuration file on HTTP GET
--body Http body to access your configuration file on HTTP ""
--header Header to add to the request. Supported formats are k:v and k=v ""

GitHub

Flag Description Default
--repository-slug Name of the repository ""
--branch Git branch name ""
--auth-token Authentication token to access your configuration file ""
--github-token Authentication token to access your configuration file on GitHub
(⚠️ deprecated, use --auth-token instead)
""
--path Path to the remote flag configuration file inside github repository ""

GitLab

Flag Description Default
--base-url Base URL of your configuration file on Gitlab ""
--repository-slug Name of the repository ""
--branch Git branch name ""
--path Path to the remote flag configuration file inside gitlab repository ""

BitBucket

Flag Description Default
--base-url Base URL of your configuration file on BitBucket ""
--repository-slug Name of the repository ""
--branch Git branch name ""
--path Path to the remote flag configuration file inside bitbucket repository ""

S3

Flag Description Default
--bucket Name of the bucket ""
--item Item of the bucket ""

Google Storage

Flag Description Default
--bucket Name of the bucket ""
--object Object of the bucket ""

ConfigMap (Kubernetes)

Flag Description Default
--namespace Namespace of the ConfigMap "default"
--config-map Name of the ConfigMap ""
--key Key of the ConfigMap ""

MongoDB

Flag Description Default
--uri URI of your configuration file ""
--database Database name of your configuration file on mongodb ""
--collection Collection of your configuration file on mongodb ""

Azure Blob Storage

Flag Description Default
--account-name Name of the storage account ""
--account-key Key of the storage account ""
--container Name of the container ""
--object Name of the object blob ""

PostgreSQL

Flag Description Default
--uri URI of your configuration file ""
--table Table of your configuration file ""
--column Column mapping to add. Supported format is c1:c2 ""

As mentioned above the --config flag is deprecated and we encourage you to use the --path flag instead. For example the following command:

go-feature-flag-cli evaluate --config="<location_of_your_flag_configuration_file>" --flag="<name_of_your_flag_to_evaluate>" --ctx='<evaluation_ctx_as_json_string>'

may be replaced by:

go-feature-flag-cli evaluate --kind="file" --path="<location_of_your_flag_configuration_file>" --flag="<name_of_your_flag_to_evaluate>" --ctx='<evaluation_ctx_as_json_string>'

How to lint a configuration file

go-feature-flag-cli lint <location_of_your_flag_configuration_file> --format="<yaml or json or toml>"

License

View license information for the software contained in this image.

How can I contribute?

This project is open for contribution, see the contributor's guide for some helpful tips.