1
0
Fork 0

Readme draft

This commit is contained in:
Gregory Eremin 2015-01-25 20:07:51 +07:00
parent 11bd731f13
commit 1f23afcfca
2 changed files with 67 additions and 0 deletions

View File

@ -1 +1,65 @@
# Confection # Confection
Confection is a configuration manager plugin for Go projects.
## Configuration
First you need to add tags to fields of the config struct.
* `json` — required for proper serialization
* `title` — human readable field name (optional)
* `attrs` — field attributes: `required`, `readonly`, `ignored`; separated by comma
* `options` — list of supported values, separated by comma
Required attributes will block `manager.RequireConfig()` call until field gets a value
Ignored attributes are not displayed.
Readonly attributes are displayed but disabled.
You also need to pass an unmarshalling function as shown below.
```go
package main
import (
"encoding/json"
"flag"
"fmt"
"github.com/localhots/confection"
)
type (
Config struct {
AppName string `json:"app_name" attrs:"required" title:"Application Name"`
BuildNumber int `json:"build_number" attrs:"readonly" title:"Build Number"`
}
)
func init() {
confection.SetupFlags()
flag.Parse()
}
func main() {
conf := Config{}
manager := confection.New(conf, func(b []byte) interface{} {
var newConf Config
if err := json.Unmarshal(b, &newConf); err != nil {
panic(err)
}
return newConf
})
manager.StartServer()
manager.RequireConfig()
fmt.Println("Ready to work!")
}
```
[Full example](https://github.com/localhots/confection/blob/master/demo/demo.go)
## Demo Screenshot
<img src="https://raw.githubusercontent.com/localhots/confection/master/demo/demo.png" width="590">

View File

@ -52,6 +52,9 @@ func (m *Manager) StartServer() {
srv.start() srv.start()
} }
func (m *Manager) RequireConfig() {
}
func (m *Manager) bootstrap() { func (m *Manager) bootstrap() {
if m.file.isExist() { if m.file.isExist() {
b, err := m.file.read() b, err := m.file.read()