Files
test/app.go

69 lines
1.2 KiB
Go

package swirl2
import (
"azugo.io/azugo"
"azugo.io/azugo/server"
"azugo.io/opentelemetry"
"github.com/spf13/cobra"
)
// App is the Swirlapplication instance.
type App struct {
*azugo.App
config *Configuration
}
// New returns a new application instance.
func New(cmd *cobra.Command, configPath, version string) (*App, error) {
config := NewConfiguration()
config.SetConfigFile(configPath)
a, err := server.New(cmd, server.Options{
AppName: "Swirl",
AppVer: version,
Configuration: config,
})
if err != nil {
return nil, err
}
a.RouterOptions().CORS.SetHeaders("Accept", "Content-Type", "Authorization")
tel, err := opentelemetry.Use(a, config.Telemetry)
if err != nil {
return nil, err
}
if err := a.AddTask(tel); err != nil {
return nil, err
}
app := &App{
App: a,
config: config,
}
err = app.InitServices()
if err != nil {
return nil, err
}
return app, nil
}
func (a *App) InitServices() error {
return nil
}
// Config returns application configuration.
//
// Panics if configuration is not loaded.
func (a *App) Config() *Configuration {
if a.config == nil || !a.config.Ready() {
panic("configuration is not loaded")
}
return a.config
}