Update README.md
This commit is contained in:
parent
cd1d79b9bc
commit
bc224778bf
49
README.md
49
README.md
@ -62,7 +62,7 @@ Corresponding JSON file:
|
|||||||
"host": "test.db.hostname",
|
"host": "test.db.hostname",
|
||||||
"port": 8080,
|
"port": 8080,
|
||||||
"username": "amdin",
|
"username": "amdin",
|
||||||
"password": "admin"
|
"password": "admin",
|
||||||
"log": {
|
"log": {
|
||||||
"path": "/var/logs/db",
|
"path": "/var/logs/db",
|
||||||
"level": "debug"
|
"level": "debug"
|
||||||
@ -126,6 +126,7 @@ Using **cli** keyword to define configuration name
|
|||||||
Log Log `cli:"log database log configurations"`
|
Log Log `cli:"log database log configurations"`
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
For **cli** definition, the string before the first space is command line argument, the rest string are the command line usage and will be oupputed when printing usage
|
||||||
|
|
||||||
Corresponding command line:
|
Corresponding command line:
|
||||||
```shell
|
```shell
|
||||||
@ -202,5 +203,51 @@ Run application like:
|
|||||||
```
|
```
|
||||||
**ParseConfig()** will analyze command line argument and extract **config.json** from argument **-c**
|
**ParseConfig()** will analyze command line argument and extract **config.json** from argument **-c**
|
||||||
|
|
||||||
|
### III. Multi-configurations
|
||||||
|
You can define all supported configuration tags in a structure and call corresponding functions in your desired order to parse.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
```golang
|
||||||
|
type Log struct {
|
||||||
|
Path string `json:"path" yaml:"path" env:"PATH" cli:"path log path" default:"/var/logs"`
|
||||||
|
Levels string `json:"levels" yaml:"levels" env:"LEVELS" cli:"levels log levels" default:"debug;error"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Database struct {
|
||||||
|
Host string `json:"host" yaml:"host" env:"DB_HOST" cli:"host database host name"`
|
||||||
|
Port int `json:"port" yaml:"port" env:"DB_PORT" cli:"port database port"`
|
||||||
|
Username string `json:"user" yaml" user" env:"DB_USER" cli:"username database username" default:"admin"`
|
||||||
|
Password string `json:"passwd" yaml:"passwd" env:"DB_PASSWD" cli:"password database password" default:"admin"`
|
||||||
|
Log Log `json:"log" yaml:"log" env:"DB_LOG_" cli:"log database log configurations"`
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Then, you can parse them like below:
|
||||||
|
```golang
|
||||||
|
dbConfig := Database{}
|
||||||
|
|
||||||
|
// parse default values
|
||||||
|
if err := config.ParseDefault(&dbConfig); err != nil {
|
||||||
|
// error handling
|
||||||
|
}
|
||||||
|
|
||||||
|
// parse configuration file from command line
|
||||||
|
err := config.ParseConfig(&dbConfig, "c")
|
||||||
|
|
||||||
|
// parse default configurations
|
||||||
|
if err != nil {
|
||||||
|
err = config.ParseConfigFile(&dbConfig), "")
|
||||||
|
}
|
||||||
|
|
||||||
|
// parse environment variables
|
||||||
|
if err != nil {
|
||||||
|
err = config.ParseEnv(&dbConfig)
|
||||||
|
}
|
||||||
|
|
||||||
|
// parse command line
|
||||||
|
if err != nil {
|
||||||
|
err = config.ParseCli(&dbConfig)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
You don't need call all of them. Invokes parsing function that your need.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user