izumi.distage.plugins

Members list

Type members

Classlikes

trait BootstrapPlugin extends PluginBase, BootstrapModule

Attributes

Companion
object
Supertypes
trait BootstrapModule
trait PluginBase
trait ModuleBase
trait CachedHashcode
class Object
trait Matchable
class Any
Show all
Known subtypes

Attributes

Companion
trait
Supertypes
class Object
trait Matchable
class Any
Self type
abstract class BootstrapPluginDef(implicit recompilationToken: ForcedRecompilationToken[_]) extends BootstrapPlugin, BootstrapModuleDef

Attributes

See also
Supertypes
trait BootstrapModuleDef
trait ModuleDefDSL
trait TagsDSL
trait IncludesDSL
trait AbstractBindingDefDSL[MakeDSL, MakeDSLUnnamedAfterFrom, SetDSL]
trait AbstractBindingDefDSLMacro[MakeDSL]
trait BootstrapModule
trait PluginBase
trait ModuleBase
trait CachedHashcode
class Object
trait Matchable
class Any
Show all
object DebugProperties extends DebugProperties

Java properties that control the behavior of load.PluginLoader

Java properties that control the behavior of load.PluginLoader

Attributes

See also
Supertypes
trait DebugProperties
class Object
trait Matchable
class Any
Self type
final abstract class ForcedRecompilationToken[T]

This macro allows distage's compile-time checks to cooperate with Scala's incremental compilation: it forces recompilation of the macro that performs compile-time plan checking every time a PluginDef's body changes.

This macro allows distage's compile-time checks to cooperate with Scala's incremental compilation: it forces recompilation of the macro that performs compile-time plan checking every time a PluginDef's body changes.

It does that by generating a new unique type for each compiler session and assigning it to the class that inherits PluginDef. The "change of super type" of a plugin forces recompilation of all code that references it, and specifically of the code generated by izumi.distage.framework.PlanCheckMacro.

This allows compile-time checking macro to re-run on relevant changes and provide rapid feedback during development.

Attributes

See also
Companion
object
Supertypes
class Object
trait Matchable
class Any

Attributes

Companion
class
Supertypes
class Object
trait Matchable
class Any
Self type
trait PluginBase extends ModuleBase

Non-abstract class or object inheritors of PluginBase will be found on the classpath by distage-extension-plugins scanning machinery. (izumi.distage.plugins.load.PluginLoader)

Non-abstract class or object inheritors of PluginBase will be found on the classpath by distage-extension-plugins scanning machinery. (izumi.distage.plugins.load.PluginLoader)

Attributes

See also
Companion
object
Supertypes
trait ModuleBase
trait CachedHashcode
class Object
trait Matchable
class Any
Known subtypes
object PluginBase

Attributes

Companion
trait
Supertypes
class Object
trait Matchable
class Any
Self type
PluginBase.type
final case class PluginConfig(packagesEnabled: Seq[String], packagesDisabled: Seq[String], cachePackages: Boolean, debug: Boolean, merges: Seq[ModuleBase], overrides: Seq[ModuleBase])

Attributes

See also
Companion
object
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all

Attributes

Companion
class
Supertypes
trait Product
trait Mirror
class Object
trait Matchable
class Any
Show all
Self type

Attributes

Supertypes
class Object
trait Matchable
class Any
Known subtypes
object PluginConfig
abstract class PluginDef(implicit recompilationToken: ForcedRecompilationToken[_]) extends PluginBase, ModuleDef

Use it to define Plugins using izumi.distage.model.definition.dsl.ModuleDefDSL syntax

Use it to define Plugins using izumi.distage.model.definition.dsl.ModuleDefDSL syntax

 object MyPlugin extends PluginDef {
   include(myModule[F])

   make[Xa[F]].from[Xa.Impl[F]]
 }

Value parameters

recompilationToken

Makes compile-time checks re-run when the source code of this PluginDef is changed, if it's used in the checked role.

Attributes

See also
Note

Since this is an abstract class, you cannot mix it with other classes or use it as a mixin. Instead, you may inherit from PluginBase, which is a trait – but in that case compile-time checks will not re-run when the class is updated in that case. Alternatively, you may use izumi.distage.model.definition.dsl.IncludesDSL#include to compose modules as values instead of using inheritance.

Supertypes
trait ModuleDef
trait ModuleDefDSL
trait TagsDSL
trait IncludesDSL
trait AbstractBindingDefDSL[MakeDSL, MakeDSLUnnamedAfterFrom, SetDSL]
trait AbstractBindingDefDSLMacro[MakeDSL]
trait Module
trait PluginBase
trait ModuleBase
trait CachedHashcode
class Object
trait Matchable
class Any
Show all

Scan the specified package at compile-time for classes and objects that inherit PluginBase

Scan the specified package at compile-time for classes and objects that inherit PluginBase

WARN: may interact badly with incremental compilation WARN: will not find plugins defined in the current module, only those defined in dependency modules (similarly to how you cannot call Scala macros defined in the current module)

Attributes

See also
Supertypes
class Object
trait Matchable
class Any
Self type