MCPcopy Create free account
hub / github.com/SignTools/SignTools / getFile

Function getFile

src/config/config.go:175–204  ·  view source on GitHub ↗
(mapDelim rune, fileName string)

Source from the content-addressed store, hash-verified

173}
174
175func getFile(mapDelim rune, fileName string) (*File, error) {
176 k := koanf.New(string(mapDelim))
177 if err := k.Load(structs.Provider(createDefaultFile(), "yaml"), nil); err != nil {
178 return nil, errors.WithMessage(err, "load default")
179 }
180 if err := k.Load(kfile.Provider(fileName), kyaml.Parser()); os.IsNotExist(err) {
181 log.Info().Str("name", fileName).Msg("creating config file")
182 } else if err != nil {
183 return nil, errors.WithMessage(err, "load existing")
184 }
185 // TODO: Fix entries with same path overwriting each other, e.g. PROFILE_CERT_NAME="bar" and PROFILE_CERT="foo"
186 if err := k.Load(env.Provider(k, "", "_", func(s string) string {
187 return strings.ToLower(s)
188 }), nil); err != nil {
189 return nil, errors.WithMessage(err, "load envvars")
190 }
191 fileConfig := File{}
192 if err := k.UnmarshalWithConf("", &fileConfig, koanf.UnmarshalConf{Tag: "yaml"}); err != nil {
193 return nil, errors.WithMessage(err, "unmarshal")
194 }
195 file, err := os.Create(fileName)
196 if err != nil {
197 return nil, errors.WithMessage(err, "create")
198 }
199 defer file.Close()
200 if err := yaml.NewEncoder(file).Encode(&fileConfig); err != nil {
201 return nil, errors.WithMessage(err, "write")
202 }
203 return &fileConfig, nil
204}

Callers 1

LoadFunction · 0.85

Calls 2

createDefaultFileFunction · 0.85
NewMethod · 0.80

Tested by

no test coverage detected