Module: LabelWeaver::Configuration

Defined in:
lib/label_weaver/configuration/model.rb,
lib/label_weaver/configuration/contract.rb

Constant Summary collapse

Model =

Defines the configuration model for use throughout the gem.

Data.define(
  :always_clone,
  :excluded_upstream_files,
  :git,
  :hooks,
  :merges,
  :forced_upstream_files
) do
  def initialize(git:, always_clone: false, hooks: {}, excluded_upstream_files: [], forced_upstream_files: [], merges: [])
    super
  end
end
Contract =
Dry::Schema.Params do
  required(:git).hash do
    required(:repository).filled(:string)
    required(:branch).filled(:string)
  end
  optional(:always_clone).filled(:bool)
  optional(:excluded_upstream_files).array(:string)
  optional(:forced_upstream_files).array(:string)
  optional(:hooks).hash do
    optional(:develop).hash do
      optional(:before_start).array(:string)
      optional(:after_start).array(:string)
      optional(:before_stop).array(:string)
      optional(:after_stop).array(:string)
    end
  end
  optional(:merges).array(:hash)
end