// Package apps is responsible to control many Iris Applications. // This package directly imports the iris root package and cannot be used // inside Iris' codebase itself. Only external packages/programs can make use of it. package apps import ( "github.com/kataras/iris/v12" "github.com/kataras/iris/v12/context" ) // Get returns an Iris Application based on its "appName". // It returns nil when no application was found with the given exact name. // // If "appName" parameter is missing then it returns the last registered one. // When no application is registered yet then it creates a new on-fly // with a "Default" name and returns that instead. // The "Default" one can be used across multiple Go packages // of the same Program too. // // Applications of the same program are registered automatically. // // To check if at least one application is registered or not // use the `GetAll` function instead. func Get(appName ...string) *iris.Application { if len(appName) == 0 || appName[0] == "" { if app := context.LastApplication(); app != nil { return app.(*iris.Application) } return iris.New().SetName("Default") } if app, ok := context.GetApplication(appName[0]); ok { return app.(*iris.Application) } return nil } // GetAll returns a slice of all registered Iris Applications. func GetAll() []*iris.Application { appsReadOnly := context.GetApplications() apps := make([]*iris.Application, 0, len(appsReadOnly)) for _, app := range appsReadOnly { apps = append(apps, app.(*iris.Application)) } return apps } // OnApplicationRegistered adds a function which fires when a new application // is registered. func OnApplicationRegistered(listeners ...func(app *iris.Application)) { appListeners := make([]func(context.Application), 0, len(listeners)) for i := range listeners { appListeners = append(appListeners, func(ctxApp context.Application) { listeners[i](ctxApp.(*iris.Application)) }) } context.OnApplicationRegistered(appListeners...) }