diff --git a/README.md b/README.md index 4e90886..421d46d 100644 --- a/README.md +++ b/README.md @@ -2,3 +2,55 @@ 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. + +```v +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: + +```v +conf := vconf.load(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` +- [x] `bool` +- [ ] `f32` +- [ ] `f64` +- [ ] `i64` +- [x] `int` +- [x] 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.