@sophya/envy

Scripts for pulling environmental variables

Usage no npm install needed!

<script type="module">
  import sophyaEnvy from 'https://cdn.skypack.dev/@sophya/envy';
</script>

README

Envy

A Sophya npm package and CLI for managing .env key/values for local development, CI, and CD workflows

ci

Usage

Pulling Keys

In order to pull keys down for a particular environment (local, staging, or prod), FIRST, make sure there is a .env.required file in the directory you are running the script from The .env.required requirements file is a file that specifies which keys in our AWS Param Store you actually need. This file should be service specific. For instance, node-app needs the slack keys, but gaia-server does not. The requirements file should look like this (note the newline at the end of the file):

KEY_1
KEY_2

Next, run the script:

  pull-env <env> <outputFile>

You will be prompted to sign in with amazon. When you configure your aws profile on the initial run, PLEASE set your profile name to default.

If all goes well, the end result should be a file written to .env with contents like

KEY_1=VALUE_1
KEY_2=VALUE_2

Loading configuration

This library also supports loading, parsing and typing configuration data from the appropriate .env file for the current environment:

import { load } from '@sophya/envy';

// Declare a type for the configuration we want to load

type Configuration = {
  host: string
  port: number
  verbose: boolean
};

// Load ENV from both the process ENV and the correct .env file for the current environment

const config = load<Configuration>((env, config) => {

  config.host = env.HOST;
  config.port = Number(env.PORT);
  config.verbose = (env.VERBOSE ?? '').toLowerCase() === 'true'; // Boolean('false') === true lol

  return config;
});

// `config` is now typed and structured

console.dir(config);