69 lines
1.2 KiB
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
|
|
}
|