An open API service indexing awesome lists of open source software.

https://github.com/jiro4989/envconfig

envconfig provides a function to get config objects from environment variables.
https://github.com/jiro4989/envconfig

config environment-variables lib library nim

Last synced: 6 days ago
JSON representation

envconfig provides a function to get config objects from environment variables.

Awesome Lists containing this project

README

        

#########
envconfig
#########

|gh-actions|

envconfig provides a function to get config objects from environment variables.
envconfig is inspired by `Go envconfig `_.

.. contents:: Table of contents
:depth: 3

************
Installation
************

.. code-block:: Bash

nimble install envconfig

*****
Usage
*****

-----
Basic
-----

Example that setting environment variables with shell.

.. code-block:: Bash

export MYAPP_NAME=envconfig
export MYAPP_VERSION=v1.0.0
export MYAPP_DIR=/opt/envconfig
export MYAPP_PORT=1234
export MYAPP_DEV=true

.. code-block:: Nim

import envconfig

type
MyApp = object
name, version, dir: string
port: int
dev: bool

let config = getEnvConfig(MyApp)

echo "MYAPP_NAME: " & config.name # envconfig
echo "MYAPP_VERSION: " & config.version # v1.0.0
echo "MYAPP_DIR: " & config.dir # /opt/envconfig
echo "MYAPP_PORT: " & $config.port # 1234
echo "MYAPP_DEV: " & $config.dev # true

Example that setting environment variables with Nim.

.. code-block:: Nim

import envconfig
from os import putEnv

type
MyApp = object
name, version, dir: string
port: int
dev: bool

putEnv("MYAPP_NAME", "envconfig")
putEnv("MYAPP_VERSION", "v1.0.0")
putEnv("MYAPP_DIR", "/opt/envconfig")
putEnv("MYAPP_PORT", "1234")
putEnv("MYAPP_DEV", "true")

let config = getEnvConfig(MyApp)

echo "MYAPP_NAME: " & config.name # envconfig
echo "MYAPP_VERSION: " & config.version # v1.0.0
echo "MYAPP_DIR: " & config.dir # /opt/envconfig
echo "MYAPP_PORT: " & $config.port # 1234
echo "MYAPP_DEV: " & $config.dev # true

----------
Validation
----------

Provides tiny functions to validate values.
A procedure can validate `requires`, `min value`, `max value` and `regex match`.
For more informations, see also `API documents `_.

*************
API Documents
*************

* `envconfig `_

*******
LICENSE
*******

MIT

.. |gh-actions| image:: https://github.com/jiro4989/envconfig/workflows/build/badge.svg
:target: https://github.com/jiro4989/envconfig/actions