MishkaBlog.Plugins.Installer (Mishka Blog v0.0.1)

Copy Markdown View Source

Installs the blog onto one site, when asked.

Subscribing to installer:extension:install is the whole declaration: the installer's own registry now knows this extension exists, under :mishka_blog, at priority 50, and :extra below is what the picker draws. Nothing is registered anywhere else, and there is no list of extensions to keep in step with this file.

A SITE IS NEVER SET UP BEHIND SOMEBODY'S BACK. This answers a request naming a site; it does not listen for a site being created. A site added to a running CMS gets its own core content and nothing else until an admin asks for the blog from the Blog menu — which is the only honest default, because a site may be a landing page that will never have a blog.

The request's :actor is whoever pressed the button and must hold what MishkaCmsCore.Runtime.ExtensionProvision.required/1 names. A request with no actor is the install wizard's own run and is answered only until the CMS is installed (MishkaCmsCore.Install.installed?/0); after that it is refused like an actor holding nothing.

Summary

Functions

Installs the blog when the payload names it, and hands the payload on untouched when it does not.

Returns a specification to start this module under a supervisor.

Callback implementation for MishkaInstaller.Event.Hook.enable/0.

Callback implementation for MishkaInstaller.Event.Hook.get/0.

Optional. See MishkaInstaller.Event.Hook.health_check/0. Override to report health.

Callback implementation for MishkaInstaller.Event.Hook.register/0.

Callback implementation for MishkaInstaller.Event.Hook.restart/0.

Callback implementation for MishkaInstaller.Event.Hook.start/0.

Callback implementation for MishkaInstaller.Event.Hook.stop/0.

Types

error_return()

@type error_return() ::
  {:error, [%{action: atom(), field: atom(), message: String.t()}]}

okey_return()

@type okey_return() :: {:ok, struct() | map() | module() | [any()]}

Functions

call(payload)

Installs the blog when the payload names it, and hands the payload on untouched when it does not.

The report goes back in :reports rather than as the reply itself, because every plugin on this event sees every call: replying with the report would make the next plugin's payload a report.

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

config()

@spec config() :: keyword()

config(key)

@spec config(atom()) :: any()

enable()

@spec enable() :: okey_return() | error_return()

Callback implementation for MishkaInstaller.Event.Hook.enable/0.

get()

@spec get() :: keyword()

Callback implementation for MishkaInstaller.Event.Hook.get/0.

health_check()

@spec health_check() :: :ok | {:degraded, term()} | {:error, term()}

Optional. See MishkaInstaller.Event.Hook.health_check/0. Override to report health.

on_dependency_error(error)

@spec on_dependency_error(term()) :: term()

Optional. See MishkaInstaller.Event.Hook.on_dependency_error/1. Override to react.

register()

@spec register() :: okey_return() | error_return()

Callback implementation for MishkaInstaller.Event.Hook.register/0.

restart()

@spec restart() :: okey_return() | error_return()

Callback implementation for MishkaInstaller.Event.Hook.restart/0.

start()

@spec start() :: okey_return() | error_return()

Callback implementation for MishkaInstaller.Event.Hook.start/0.

start_link(args \\ [])

stop()

@spec stop() :: okey_return() | error_return()

Callback implementation for MishkaInstaller.Event.Hook.stop/0.

unregister()

@spec unregister() :: okey_return() | error_return()

Callback implementation for MishkaInstaller.Event.Hook.unregister/0.