RoleAppMain

izumi.distage.roles.RoleAppMain
See theRoleAppMain companion object
abstract class RoleAppMain[F[_]](implicit val tagK: Tag[F], val defaultModule: DefaultModule[F], val artifact: IzArtifactMaterializer) extends RoleCheckableApp[F]

Create a launcher for role-based applications by extending this in a top-level object

Attributes

See also
Example
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")
 }
}
Companion
object
Graph
Supertypes
class RoleCheckableApp[F]
trait CheckableApp
class Object
trait Matchable
class Any
Known subtypes
class LauncherBIO[F]

Members list

Type members

Classlikes

open class PlanCheck[Cfg <: Any](cfg: Cfg = ...)(implicit planCheck: PlanCheckMaterializer[RoleAppMain.this.type, Cfg]) extends Main[this.type, Cfg]

Shortcut for izumi.distage.framework.PlanCheck.Main

object WiringTest extends MyApp.PlanCheck(PlanCheckConfig(...))

same as

object WiringTest extends PlanCheck.Main(MyApp, PlanCheckConfig(...))

Attributes

Supertypes
class Main[RoleAppMain.this.type, Cfg]
class Object
trait Matchable
class Any

Inherited classlikes

class SpecificResourceConfigLoader(val classLoader: ClassLoader, val resourceName: String) extends ConfigLoader

Attributes

Inherited from:
RoleCheckableApp
Supertypes
trait ConfigLoader
class Object
trait Matchable
class Any

Inherited types

final override type AppEffectType[A] = F[A]

Attributes

Inherited from:
RoleCheckableApp

Value members

Concrete methods

def assertAppCompileTime[Cfg <: Any](cfg: Cfg = ...)(implicit planCheck: PlanCheckMaterializer[this.type, Cfg]): PlanCheckMaterializer[this.type, Cfg]
def main(args: Array[String]): MainEffect[Unit]
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!

Attributes

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])]
final override def roleAppBootModule: Module

Attributes

Definition Classes
final def roleAppBootModule(argv: ArgV): Module
def roleAppBootModule(argv: ArgV, additionalRoles: RequiredRoles, crashLogRouterRef: Option[CrashLogRouterRef]): Module

Attributes

See also

Inherited methods

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)

Attributes

Throws
Throwable

You may throw a custom exception if your check error is not describable by izumi.distage.model.planning.PlanIssue

Inherited from:
CheckableApp
override def preparePlanCheckInput(selectedRoles: RoleSelection, chosenConfigFile: Option[String]): PlanCheckInput[F]

Attributes

Definition Classes
Inherited from:
RoleCheckableApp
final protected def roleAppBootModulePlanCheckOverrides(chosenRoles: RoleSelection, chosenConfigResource: Option[(ClassLoader, String)]): ModuleDef

Attributes

Inherited from:
RoleCheckableApp

Implicits

Implicits

implicit val defaultModule: DefaultModule[F]
implicit override val tagK: Tag[F]