47 lines
867 B
Go
47 lines
867 B
Go
|
package pkiadm
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"fmt"
|
||
|
"io/ioutil"
|
||
|
"os"
|
||
|
)
|
||
|
|
||
|
var configLookupPath = []string{
|
||
|
"config.json",
|
||
|
"pkiadm.json",
|
||
|
"/etc/pkiadm.json",
|
||
|
}
|
||
|
|
||
|
type (
|
||
|
Config struct {
|
||
|
Path string // path to the unix socket
|
||
|
Storage string // path to the storage location
|
||
|
}
|
||
|
)
|
||
|
|
||
|
func LoadConfig() (*Config, error) {
|
||
|
for _, path := range configLookupPath {
|
||
|
if _, err := os.Stat(path); os.IsNotExist(err) {
|
||
|
continue
|
||
|
}
|
||
|
return tryToLoadConfig(path)
|
||
|
}
|
||
|
return nil, fmt.Errorf("no config file found")
|
||
|
}
|
||
|
|
||
|
// tryToLoadConfig loads the config and tries to parse the file. When this
|
||
|
// doesn't work out, the error is returned.
|
||
|
func tryToLoadConfig(path string) (*Config, error) {
|
||
|
var cfg *Config
|
||
|
raw, err := ioutil.ReadFile(path)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
if err := json.Unmarshal(raw, &cfg); err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
return cfg, nil
|
||
|
}
|