mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2024-11-20 00:41:02 +00:00
86 lines
2.1 KiB
Go
86 lines
2.1 KiB
Go
|
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
|
||
|
}
|