biome

0.3.3 • Public • Published

Biome: a small script to manage a user's environment variables

CircleCI npm version Licence

Manage environment variables in a sane way. Never push up secrets again!

  • Enforces a clear separation of secrets and code.
  • All secrets are in one configurable place. (by default, ~/.biome)
  • Associate any number of variables with any number of projects.
  • Easily create complex variable structures that inherit from one-another.

Installation

npm install -g biome

Usage

$ biome --help
  Usage: biome [options] [command]
 
  Commands:
 
    init [project]            Create a new project with the specified name, and save an alias to this folder.
    add [project]             Add a variable to a project. Specify like NAME=value.
    use [project]             Open a shell with a project's associated variables included.
    edit [project]            Open $EDITOR with the project's associated environment variables.
    vars [options] [project]  Echo all variables.
 
  Options:
    -h, --help     output usage information
    -V, --version  output the version number
 
  Examples:
 
  $ biome init project
  $ biome add project FOO=bar BAZ="I'm a teapot"
  $ biome use project

Workflow

To set up an environment, first run biome init project to set up a new environment called project. Then, to add new variables to an environment, run biome add project KEY=value. To perform more complicated configurations, edit the environment directly with biome edit project.

Once you'd like to use the environment, run biome use project. A new instance of $SHELL will be spawned containing all the configured variables, plus a few Biome-specific ones. To view your current environment, type biome.

How it works:

For each project, biome creates 2 files: a local Biomefile and a global project.json.

// Biomefile
{
  "name": "project"
}
// project.json
{
  "VARIABLE": "value"
}

The local Biomefile can be committed to source control because it just contains a reference to the global project. The project.json is stored in ~/.biome/project.json, where project is replaced with the identifier in the Biomefile. This file is where the environment variables themselves are actually stored. Since each user can have a separate project.json for each system, everyone can customize their config to suit their needs.

Configuration

  • BIOME_LOCAL_NAME: The name of the file in the project that references an environment. Defaults to Biomefile.
  • BIOME_FOLDER_NAME: The name of the folder that biome stores all secrets within. Defaults to ~/.biome.

Tips and Tricks

  • Want to include other environments into a project? Within the project's environment, add the special key $include mapping to an array of envornments. For example, "$include": ["another", "environment", "here"].
  • Easily give new users a simple way to enter values. Within the Biomefile, define a property called template. Each key of template should be the variable name, while each value should be its default value. For example:
{
  "name": "my-project",
  "template": {
    "KEY": "value"
  }
}

Then, when the user runs biome init, they'll be prompted for the values specified. Above, they'd be prompted for KEY, and given a default choice of "value".

  • Don't want to hardcode templates into a project? As an argument to biome init, specify a template url after the project name, like biome init project http://example.com/template.json.

Created by Ryan Gaus

Package Sidebar

Install

npm i biome

Weekly Downloads

1,460

Version

0.3.3

License

ISC

Last publish

Collaborators

  • 1egoman