moving config code
This commit is contained in:
parent
64663e9742
commit
e8a39a3b14
1 changed files with 85 additions and 0 deletions
85
pkg/config/config.go
Normal file
85
pkg/config/config.go
Normal file
|
@ -0,0 +1,85 @@
|
|||
package config
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
|
||||
"github.com/naoina/toml"
|
||||
"github.com/vrischmann/envconfig"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
Remote struct {
|
||||
Kind string `envconfig:"optional"`
|
||||
Base string `envconfig:"optional"`
|
||||
Orgs []string `envconfig:"optional"`
|
||||
Open bool `envconfig:"optional"`
|
||||
Private bool `envconfig:"optional"`
|
||||
SkipVerify bool `envconfig:"optional"`
|
||||
}
|
||||
|
||||
Auth struct {
|
||||
Client string `envconfig:"optional"`
|
||||
Secret string `envconfig:"optional"`
|
||||
Authorize string `envconfig:"optional"`
|
||||
AccessToken string `envconfig:"optional"`
|
||||
RequestToken string `envconfig:"optional"`
|
||||
Scope []string `envconfig:"optional"`
|
||||
}
|
||||
|
||||
Server struct {
|
||||
Base string `envconfig:"optional"`
|
||||
Addr string `envconfig:"optional"`
|
||||
Cert string `envconfig:"optional"`
|
||||
Key string `envconfig:"optional"`
|
||||
Scheme string `envconfig:"optional"`
|
||||
Hostname string `envconfig:"optional"`
|
||||
}
|
||||
|
||||
Session struct {
|
||||
Secret string `envconfig:"optional"`
|
||||
Expires int64 `envconfig:"optional"`
|
||||
}
|
||||
|
||||
Database struct {
|
||||
Driver string `envconfig:"optional"`
|
||||
Datasource string `envconfig:"optional"`
|
||||
}
|
||||
|
||||
Docker struct {
|
||||
Cert string `envconfig:"optional"`
|
||||
Key string `envconfig:"optional"`
|
||||
Addr string `envconfig:"optional"`
|
||||
Swarm bool `envconfig:"optional"`
|
||||
}
|
||||
|
||||
Environment []string `envconfig:"optional"`
|
||||
|
||||
// Plugins represents a white-list of plugins
|
||||
// that the system is authorized to load.
|
||||
Plugins []string `envconfig:"white_list"`
|
||||
}
|
||||
|
||||
// Load loads the configuration file and reads
|
||||
// parameters from environment variables.
|
||||
func Load(path string) (*Config, error) {
|
||||
data, err := ioutil.ReadFile("drone.toml")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return LoadBytes(data)
|
||||
}
|
||||
|
||||
// LoadBytes reads the configuration file and
|
||||
// reads parameters from environment variables.
|
||||
func LoadBytes(data []byte) (*Config, error) {
|
||||
conf := &Config{}
|
||||
err := toml.Unmarshal(data, conf)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = envconfig.InitWithPrefix(conf, "DRONE")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return conf, nil
|
||||
}
|
Loading…
Reference in a new issue