smokestack/documentation/dsls/DSL:-Smokestack.md
James Harton 5f8e19ee07
All checks were successful
continuous-integration/drone/push Build is passing
feat: Add before_build and after_build entities to factories.
2024-05-26 20:50:33 +12:00

4.8 KiB

DSL: Smokestack.Dsl

The DSL definition for the Smokestack DSL.

DSL Documentation

Index

  • smokestack
    • factory
      • after_build
      • attribute
      • before_build

Docs

smokestack

  • factory
    • after_build
    • attribute
    • before_build

  • :domain (module that adopts Ash.Domain) - The default Ash Domain to use when evaluating loads

factory

Define factories for a resource

* after_build
* attribute
* before_build
  • :domain (module that adopts Ash.Domain) - The Ash Domain to use when evaluating loads

  • :resource (module that adopts Ash.Resource) - Required. An Ash Resource

  • :variant (t:atom/0) - The name of a factory variant The default value is :default.

after_build

Modify the record after building.

Allows you to provide a function which can modify the built record before returning.

These hooks are only applied when building records and not parameters.

  • :hook (mfa or function of arity 1) - Required. A function which returns an updated record
attribute
  • :name (t:atom/0) - Required. The name of the target attribute

  • :generator - Required. A function which can generate an appropriate value for the attribute.œ

before_build

Modify the attributes before building.

Allows you to provide a function which can modify the the attributes before building.

  • :hook (mfa or function of arity 1) - Required. A function which returns an updated record

smokestack

Nested DSLs

  • factory
    • after_build
    • attribute
    • before_build

Options

Name Type Default Docs
domain{: #smokestack-domain } module The default Ash Domain to use when evaluating loads

smokestack.factory

factory resource, variant \\ :default

Define factories for a resource

Nested DSLs

Arguments

Name Type Default Docs
resource{: #smokestack-factory-resource .spark-required} module An Ash Resource
variant{: #smokestack-factory-variant } atom :default The name of a factory variant

Options

Name Type Default Docs
domain{: #smokestack-factory-domain } module The Ash Domain to use when evaluating loads

smokestack.factory.after_build

after_build hook

Modify the record after building.

Allows you to provide a function which can modify the built record before returning.

These hooks are only applied when building records and not parameters.

Arguments

Name Type Default Docs
hook{: #smokestack-factory-after_build-hook .spark-required} (any -> any) | mfa A function which returns an updated record

Introspection

Target: Smokestack.Dsl.AfterBuild

smokestack.factory.attribute

attribute name, generator

Arguments

Name Type Default Docs
name{: #smokestack-factory-attribute-name .spark-required} atom The name of the target attribute
generator{: #smokestack-factory-attribute-generator .spark-required} (-> any) | mfa | (any -> any) | mfa | (any, any -> any) | mfa | Smokestack.Template.Choose | Smokestack.Template.Constant | Smokestack.Template.Cycle | Smokestack.Template.NTimes | Smokestack.Template.Sequence A function which can generate an appropriate value for the attribute.œ

Introspection

Target: Smokestack.Dsl.Attribute

smokestack.factory.before_build

before_build hook

Modify the attributes before building.

Allows you to provide a function which can modify the the attributes before building.

Arguments

Name Type Default Docs
hook{: #smokestack-factory-before_build-hook .spark-required} (any -> any) | mfa A function which returns an updated record

Introspection

Target: Smokestack.Dsl.BeforeBuild

Introspection

Target: Smokestack.Dsl.Factory