25 lines
489 B
Go
25 lines
489 B
Go
package app
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"go.ipao.vip/atom/container"
|
|
"go.ipao.vip/atom/opt"
|
|
)
|
|
|
|
func Provide(opts ...opt.Option) error {
|
|
options := opt.New(opts...)
|
|
var config Config
|
|
if err := options.UnmarshalConfig(&config); err != nil {
|
|
return fmt.Errorf("unmarshal app config: %w", err)
|
|
}
|
|
|
|
if err := container.Container.Provide(func() (*Config, error) {
|
|
return &config, nil
|
|
}, options.DiOptions()...); err != nil {
|
|
return fmt.Errorf("provide app config: %w", err)
|
|
}
|
|
|
|
return nil
|
|
}
|