diff options
| author | Shulhan <ms@kilabit.info> | 2023-05-15 20:37:59 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2023-05-15 20:37:59 +0700 |
| commit | f59e59c029a0332e7fd63e0cd5ea7fb30eb7d991 (patch) | |
| tree | aeea5f62b8f0ec9bd131d9fb4c5643f419c39cc1 /config.go | |
| parent | d887d308d9afad21a7b6b6385713c6c4ee0b1463 (diff) | |
| download | gotp-f59e59c029a0332e7fd63e0cd5ea7fb30eb7d991.tar.xz | |
all: add function loadConfig
The loadConfig load the configuration from raw bytes.
This replace part of newConfig with loadConfig to minimize duplicate.
The idea of loadConfig is to simplify testing later.
Diffstat (limited to 'config.go')
| -rw-r--r-- | config.go | 39 |
1 files changed, 26 insertions, 13 deletions
@@ -33,33 +33,46 @@ func newConfig(file string) (cfg *config, err error) { var ( logp = `newConfig` - in *ini.Ini - dir string + content []byte + isNotExist bool ) - cfg = &config{ - Issuers: make(map[string]string), - file: file, - } - - in, err = ini.Open(file) + content, err = os.ReadFile(file) if err != nil { if !errors.Is(err, fs.ErrNotExist) { return nil, fmt.Errorf(`%s: Open %q: %w`, logp, file, err) } - cfg.isNotExist = true + isNotExist = true } - if cfg.isNotExist { - dir = filepath.Dir(file) + if isNotExist { + var dir = filepath.Dir(file) err = os.MkdirAll(dir, 0700) if err != nil { return nil, fmt.Errorf(`%s: MkdirAll %q: %w`, logp, dir, err) } - return cfg, nil } - err = in.Unmarshal(cfg) + cfg, err = loadConfig(content) + if err != nil { + return nil, fmt.Errorf(`%s: %w`, logp, err) + } + + cfg.isNotExist = isNotExist + cfg.file = file + + return cfg, nil +} + +// loadConfig load configuration from raw bytes. +func loadConfig(content []byte) (cfg *config, err error) { + var logp = `loadConfig` + + cfg = &config{ + Issuers: make(map[string]string), + } + + err = ini.Unmarshal(content, cfg) if err != nil { return nil, fmt.Errorf(`%s: %w`, logp, err) } |
