DotEnvy
I released a new Swift library, DotEnvy. It's a parser and loader for dotenv files.
Dotenv is a vaguely specified format that is supported by libraries found for most languages used in server-side development. The idea is that a twelve-factor app is supposed to read its configuration from environment variables, which can be a hassle to maintain during development. So you store them in a non-version controlled file called .env
your application reads upon startup.
The format looks more or less like this:
KEY1=VALUE1
KEY2="VALUE2"
KEY3="MULTILINE
VALUE"
KEY4='REFERENCE TO ${KEY3}'
The Swift libraries I could find seemed to lack features and had not seen updates in years. I don't think a library like this needs a huge number of features, but multiline strings and variable references were something I wanted. And writing parsers is fun.
DotEnvy has good test coverage and online documentation. There's also pretty good error reporting.
There's also a command line tool that allows you to syntax check a dotenv file or convert it to JSON. I was going add a launcher (i.e. run dotenv-tool launch sh
and it'd export the environment from .env
and run sh
), but discovered that pseudo terminals are a pain and my Stevens has gone missing. Patches are welcome.
I accidentally used the same name as a Rust dotenv library, but I decided there's enough namespacing provided by the language support that the risk of confusion isn't too great.