conf/README.md

1.3 KiB

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.