2
0
config/README.md

68 lines
1.9 KiB
Markdown
Raw Normal View History

2017-12-12 21:51:25 +07:00
## Introduction
2017-12-12 22:33:47 +07:00
**config** is a simple golang library and designed to read configurations from JSON, Yaml files, environment variables and command line. **config** depends on [go-yaml](https://github.com/go-yaml/yaml) to anlayze Yaml file and uses built-in golang library to handle JSON file.
2017-12-12 21:51:25 +07:00
## Installation
1. Install [Yaml](https://github.com/go-yaml/yaml) library first:
```
go get gopkg.in/yaml.v2
```
2017-12-12 22:18:55 +07:00
2. Install **config** library:
2017-12-12 21:51:25 +07:00
```
go get github.com/eschao/config
```
## Usage
2017-12-12 23:27:48 +07:00
#### I. Data types
Like JSON, Yaml, **config** uses tags to define configurations. It supports the following golang data types:
* bool
* string
* int8, int16, int, int32, int64
* uint8, uint16, uint, uint32, uint64
* float32, float64
* slice type. e.g: []string, []int ...
#### II. Defines **default** values
Using **default** keyword in structure tags to define default value. Example codes:
2017-12-12 22:33:47 +07:00
```golang
type Log struct {
Path string `default:"/var/logs"`
Level string `default:"debug"`
}
```
2017-12-12 23:27:48 +07:00
After that, calls ```config.ParseDefault(interface{})``` to set structure instance with default values. Example codes:
2017-12-12 22:33:47 +07:00
```golang
logConfig := Log{}
config.ParseDefault(&logConfig)
```
2017-12-12 23:27:48 +07:00
#### III. Reads configurations from JSON and Yaml files
##### 1. Using ```json``` to define configuration name
2017-12-12 22:18:55 +07:00
```golang
type Database struct {
2017-12-12 22:33:47 +07:00
Host string `json:"host"`
Port int `json:"port"`
Username string `json:"username" default:"admin"`
Password string `json:"password" default:"admin"`
Log Log `json:"log"`
2017-12-12 22:18:55 +07:00
}
```
2017-12-12 23:27:48 +07:00
##### 2. Using ```yaml``` to define configuration name
```golang
type Database struct {
Host string `yaml:"host"`
Port int `yaml:"port"`
Username string `yaml:"username" default:"admin"`
Password string `yaml:"password" default:"admin"`
Log Log `yaml:"log"`
}
```
2017-12-12 22:33:47 +07:00
Parsing configurations from JSON:
2017-12-12 22:18:55 +07:00
```golang
dbConfig := Database{}
2017-12-12 22:33:47 +07:00
config.ParseConfigFile(&dbConfig, "config.json")
2017-12-12 22:18:55 +07:00
```