aboutsummaryrefslogtreecommitdiff
path: root/config.go
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2023-05-15 20:37:59 +0700
committerShulhan <ms@kilabit.info>2023-05-15 20:37:59 +0700
commitf59e59c029a0332e7fd63e0cd5ea7fb30eb7d991 (patch)
treeaeea5f62b8f0ec9bd131d9fb4c5643f419c39cc1 /config.go
parentd887d308d9afad21a7b6b6385713c6c4ee0b1463 (diff)
downloadgotp-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.go39
1 files changed, 26 insertions, 13 deletions
diff --git a/config.go b/config.go
index f5feb9e..813c222 100644
--- a/config.go
+++ b/config.go
@@ -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)
}