The dotenv package

[Tags:library, mit, program, test]

In most applications, configuration should be separated from code. While it usually works well to keep configuration in the environment, there are cases where you may want to store configuration in a file outside of version control.

Dotenv files have become popular for storing configuration, especially in development and test environments. In Ruby, Python and Javascript there are libraries to facilitate loading of configuration options from configuration files. This library loads configuration to environment variables for programs written in Haskell.

To use, call loadFile from your application:

 import Configuration.Dotenv
 loadFile False "/my/dotenvfile"

This package also includes an executable that can be used to inspect the results of applying one or more Dotenv files to the environment, or for invoking your executables with an environment after one or more Dotenv files is applied.

See the Github page for more information on this package.


[Skip to Readme]

Properties

Versions 0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.0.3, 0.1.0.4, 0.1.0.5, 0.1.0.6, 0.1.0.7, 0.1.0.8, 0.1.0.9, 0.2.0.0, 0.3.0.0, 0.3.0.1, 0.3.0.2, 0.3.0.3, 0.3.1.0 (info)
Change log CHANGELOG.md
Dependencies base (>=4.6 && <5.0), base-compat (>=0.4), dotenv (>=0.3.1.0), exceptions (==0.8.*), megaparsec (>=5.0 && <6.0), optparse-applicative (>=0.11 && <0.14), process, text, transformers (>=0.4 && <0.6) [details]
License MIT
Copyright 2015-2016 Stack Builders Inc.
Author Justin Leitgeb
Maintainer hackage@stackbuilders.com
Category Configuration
Home page https://github.com/stackbuilders/dotenv-hs
Bug tracker https://github.com/stackbuilders/dotenv-hs/issues
Source repository head: git clone git@github.com:stackbuilders/dotenv-hs.git
Uploaded Tue Oct 18 20:50:24 UTC 2016 by mrkkrp
Distributions LTSHaskell:0.3.1.0, NixOS:0.3.1.0, Stackage:0.3.1.0, Tumbleweed:0.3.1.0
Downloads 1776 total (31 in the last 30 days)
Votes
0 []
Status Docs available [build log]
Last success reported on 2016-10-18 [all 1 reports]

Modules

[Index]

Flags

NameDescriptionDefaultType
devTurn on development settings.DisabledManual

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

For package maintainers and hackage trustees

Readme for dotenv

Readme for dotenv-0.3.1.0

Build Status Hackage

Dotenv files for Haskell

In most applications, configuration should be separated from code. While it usually works well to keep configuration in the environment, there are cases where you may want to store configuration in a file outside of version control.

"Dotenv" files have become popular for storing configuration, especially in development and test environments. In Ruby, Python and Javascript there are libraries to facilitate loading of configuration options from configuration files. This library loads configuration to environment variables for programs written in Haskell.

Installation

In most cases you will just add dotenv to your cabal file. You can also install the library and executable by invoking cabal install dotenv.

Usage

Set configuration variables in a file following the format below:

S3_BUCKET=YOURS3BUCKET
SECRET_KEY=YOURSECRETKEYGOESHERE

Then, calling Dotenv.load from your Haskell program reads the above settings into the environment:

import qualified Configuration.Dotenv as Dotenv
Dotenv.loadFile False "/path/to/your/file"

After calling Dotenv.load, you are able to read the values set in your environment using standard functions from System.Environment such as lookupEnv and getEnv.

Configuration

The first argument to loadFile specifies whether you want to override system settings. False means Dotenv will respect already-defined variables, and True means Dotenv will overwrite already-defined variables.

Advanced Dotenv File Syntax

You can add comments to your Dotenv file, on separate lines or after values. Values can be wrapped in single or double quotes. Multi-line values can be specified by wrapping the value in double-quotes, and using the "\n" character to represent newlines.

The spec file is the best place to understand the nuances of Dotenv file parsing.

Command-Line Usage

You can call dotenv from the command line in order to load settings from one or more dotenv file before invoking an executable:

dotenv -f mydotenvfile myprogram

Hint: The env program in most Unix-like environments prints out the current environment settings. By invoking the program env in place of myprogram above you can see what the environment will look like after evaluating multiple Dotenv files.

Author

Justin Leitgeb

License

MIT

Copyright

(C) 2015-2016 Stack Builders Inc.