abstract class RoleAppMain[F[_]] extends RoleCheckableApp[F]
Create a launcher for role-based applications by extending this in a top-level object
import izumi.distage.framework.RoleAppMain import izumi.distage.plugins.PluginConfig object RoleLauncher extends RoleAppMain.LauncherBIO[zio.IO] { override def pluginConfig: PluginConfig = { PluginConfig.cached(pluginsPackage = "my.example.app.plugins") } }
- See also
- Alphabetic
- By Inheritance
- RoleAppMain
- RoleCheckableApp
- CheckableApp
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new RoleAppMain()(implicit tagK: TagK[F], defaultModule: DefaultModule[F], artifact: IzArtifactMaterializer)
Type Members
- final type AppEffectType[A] = F[A]
- Definition Classes
- RoleCheckableApp → CheckableApp
- class PlanCheck[Cfg <: Any] extends Main[RoleAppMain.this.type, Cfg]
Shortcut for izumi.distage.framework.PlanCheck.Main
Shortcut for izumi.distage.framework.PlanCheck.Main
object WiringTest extends MyApp.PlanCheck(PlanCheckConfig(...))
same as
object WiringTest extends PlanCheck.Main(MyApp, PlanCheckConfig(...))
Abstract Value Members
- abstract def pluginConfig: PluginConfig
- Attributes
- protected
- abstract def shutdownStrategy: AppShutdownStrategy[F]
- Attributes
- protected
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- implicit val artifact: IzArtifactMaterializer
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def assertAppCompileTime[Cfg <: Any](cfg: Cfg = PlanCheckConfig.empty)(implicit planCheck: PlanCheckMaterializer[RoleAppMain.this.type, Cfg]): PlanCheckMaterializer[RoleAppMain.this.type, Cfg]
- def bootstrapPluginConfig: PluginConfig
- Attributes
- protected
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def customCheck(planVerifier: PlanVerifier, excludedActivations: Set[NESet[AxisPoint]], checkConfig: Boolean, planCheckInput: PlanCheckInput[AppEffectType]): PlanVerifierResult
Override this to execute additional arbitrary user-defined checks at compile-time (or runtime via
PlanCheck.runtime
)Override this to execute additional arbitrary user-defined checks at compile-time (or runtime via
PlanCheck.runtime
)- Definition Classes
- CheckableApp
- Exceptions thrown
Throwable
You may throw a custom exception if your check error is not describable by izumi.distage.model.planning.PlanIssue
- implicit val defaultModule: DefaultModule[F]
- def earlyFailureHandler(args: ArgV): AppFailureHandler
- Attributes
- protected
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def main(args: Array[String]): Unit
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- def preparePlanCheckInput(selectedRoles: RoleSelection, chosenConfigFile: Option[String]): PlanCheckInput[F]
- Definition Classes
- RoleCheckableApp → CheckableApp
- def replLocator(args: String*)(implicit F: QuasiIO[F]): F[Locator]
Create an object graph for inspection in the REPL:
Create an object graph for inspection in the REPL:
scala> val graph = Launcher.replLocator("-u", "mode:test", ":role1") val graph: izumi.fundamentals.platform.functional.Identity[izumi.distage.model.Locator] = izumi.distage.LocatorDefaultImpl@6f6a2ac8 scala> val testObj = graph.get[Hello] val testObj: example.Hellower = example.Hellower@25109d84 scala> testObj.hello("test") Hello test!
- Note
All resources will be leaked. Use replLocatorWithClose if you need resource cleanup within a REPL session.
- def replLocatorWithClose(args: String*)(implicit F: QuasiIO[F]): F[(Locator, () => F[Unit])]
- def requiredRoles(argv: ArgV): Vector[RawRoleParams]
Roles always enabled in this RoleAppMain
Roles always enabled in this RoleAppMain
- Attributes
- protected
- def roleAppBootModule(argv: ArgV, additionalRoles: RequiredRoles): Module
- See also
izumi.distage.roles.RoleAppBootModule for initial values
- def roleAppBootModule(argv: ArgV): Module
- final def roleAppBootModule: Module
- Definition Classes
- RoleAppMain → RoleCheckableApp
- final def roleAppBootModulePlanCheckOverrides(chosenRoles: RoleSelection, chosenConfigResource: Option[(ClassLoader, String)]): ModuleDef
- Attributes
- protected
- Definition Classes
- RoleCheckableApp
- def roleAppBootOverrides(argv: ArgV): Module
Overrides applied to roleAppBootModule
Overrides applied to roleAppBootModule
- Attributes
- protected
- Note
Bootstrap Injector will always run under Identity, other effects (cats.effect.IO, zio.IO) are not available at this stage.
,The components added here are visible during the creation of the app, but *not inside* the app, to override components *inside* the app, use
pluginConfig
& izumi.distage.plugins.PluginConfig#overriddenBy:override def pluginConfig: PluginConfig = { super.pluginConfig overriddenBy new PluginDef { make[MyComponentX]] } }
- See also
izumi.distage.roles.RoleAppBootModule for initial values of roleAppBootModule
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- implicit val tagK: TagK[F]
- Definition Classes
- RoleAppMain → RoleCheckableApp → CheckableApp
- def toString(): String
- Definition Classes
- AnyRef → Any
- def unusedValidAxisChoices: Set[AxisChoice]
Allow to set these axis choices in config even if they're not used in the application Normally, an axis choice specified in config, but never used would be deemed an error.
Allow to set these axis choices in config even if they're not used in the application Normally, an axis choice specified in config, but never used would be deemed an error.
- Attributes
- protected
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()