README
Environment Initialization Helper
Usage
npm i -g @oberd/env-init
Usage: env-init [options]
Options:
-h, --help output usage information
-V, --version output the version number
-d --directory [dir] Directory of package.json config for env-init
-f --force Force overwrite of existing confguration
Problem
Environment configuration when starting development on a new project can be confusing. Fortunately, we can program things to help! Many times this type of thing is solved by source controlling individual "example" configuration files, and then manually customizing them for your local development environment.
Instead of traditional default files, env-init
can help you create a guided tour of initialization on the command prompt, complete with defaults, and providing transparency on what settings are required to run the application.
Configuration (For Project Authors)
All of the configuration for env-init
is done in the "env-init"
key in package.json
. The individual settings can be output to either a file, or etcd adapter.
Example
{
"env-init": {
"adapter": {
"type": "file",
"destination": ".env.local"
},
"prompts": [
{
"name": "DOMAIN",
"description": "What domain should I use for this app?",
"default": "myapp.company.com"
},
{
"name": "GITHUB_OAUTH_TOKEN",
"description": "Please enter a github oauth token for use with composer and npm"
}
]
}
}
Upon running the command line env-init
in a directory containing a package.json
with the config above, env-init
will prompt the user using flatiron prompts, and output the result to a file. This could be (by default):
Any prompt that does not have a default will search the user environment for that variable and fill in a default if the variable is set. For instance, if you have a global GITHUB_OAUTH_TOKEN
set in your local, the default will auto-populate into env-init
.
DOMAIN=myapp.company.com
GITHUB_OAUTH_TOKEN=1090123asdfaldf900219
Adapter Options
{
"env-init": {
"adapter": {
"type": "etcd",
"destination": "/env/quest-api"
}
}
}
Etcd Adapter
To use the Etcd Adapter, you must have an ETCDCTL_PEERS
environment variable pointed at an etcd cluster endpoint (e.g. http://127.0.0.1:4001
)