HostKit.ProjectDSL (host_kit v0.1.0-beta.1)

Copy Markdown View Source

Helpers for building project-local HostKit DSLs.

HostKit stays generic; consuming projects can define their own roots, prefixes, service wrappers, and helper macros with this module.

defmodule MyInfra do
  use HostKit.ProjectDSL

  root :source, "/opt/apps/src"
  root :state, "/var/lib/apps"
  prefix :user, "app-"

  defservice :app_service do
    let :service_user, do: prefixed(:user, service_name())
    path :source_dir, root(:source), service_name()
    path :state_dir, root(:state), service_name()

    macro :standard_user do
      account service_user(), system: true, home: state_path("home")
    end
  end
end

Then explicitly load and use it from a HostKit config:

Code.require_file("my_infra.exs", __DIR__)

use HostKit.DSL
use MyInfra

project :demo do
  app_service :web do
    standard_user()
    directory state_path("home"), owner: service_user()
  end
end

Summary

Functions

defservice(name, list)

(macro)

prefix(name, value)

(macro)

root(name, path)

(macro)