A small V library for reading configuration from a TOML file & environment variables.
 
 
Go to file
Jef Roosens 3a4b4b334e
chore: ran v fmt for V 0.3.3 changes
2023-02-08 10:40:37 +01:00
test feat: add bool type 2022-12-28 20:04:45 +01:00
.gitignore Moved over files from vieter repo 2022-06-15 12:40:35 +02:00
LICENSE chore: added license 2022-06-15 12:42:25 +02:00
README.md chore: added readme 2022-12-28 20:53:27 +01:00
bool_test.v chore: ran v fmt for V 0.3.3 changes 2023-02-08 10:40:37 +01:00
conf.v chore: ran v fmt for V 0.3.3 changes 2023-02-08 10:40:37 +01:00
conf_test.v chore: ran v fmt for V 0.3.3 changes 2023-02-08 10:40:37 +01:00
int_test.v chore: ran v fmt for V 0.3.3 changes 2023-02-08 10:40:37 +01:00
string_test.v chore: ran v fmt for V 0.3.3 changes 2023-02-08 10:40:37 +01:00
v.mod refactor: renamed module to conf 2022-06-22 09:12:59 +02:00

README.md

Vconf

Vconf is a small V library for loading in configuration from a TOML config file and/or environment variables.

Usage

Vconf works by reading configuration variables from both a TOML file and/or environment variables.

struct Config {
pub:
	port                 int    = 8000
	log_level            string = 'WARN'
	pkg_dir              string
	data_dir             string
	api_key              string
	default_arch         string
	global_schedule      string = '0 3'
	base_image           string = 'archlinux:base-devel'
	max_log_age          int    = -1
	log_removal_schedule string = '0 0'
	collect_metrics      bool   [empty_default]
}

This is an example of a configuration struct. The configuration can then be processed as follows:

conf := vconf.load<Config>(prefix: 'VIETER_', default_path: config_file)!

Configuration is defined completely as a V struct.

Progress

My goal is to eventually support most types that the TOML library supports. Currently supported:

  • Date
  • DateTime
  • Time
  • bool
  • f32
  • f64
  • i64
  • int
  • string
  • u64
  • []Any
  • map[string]Any

With the last one, my plan is to have this be another struct inside the top-level one. Configuration could then be defined recursively.