Module: Rexer::Definition

Defined in:
lib/rexer/definition.rb,
lib/rexer/definition/dsl.rb,
lib/rexer/definition/data.rb,
lib/rexer/definition/diff.rb,
lib/rexer/definition/lock.rb

Defined Under Namespace

Modules: ExtensionComparable, Lock Classes: DefinitionFileNotFound, Diff, Dsl

Constant Summary collapse

Source =
::Data.define(:type, :options)
Plugin =
::Data.define(:name, :source, :hooks, :env) do
  include ExtensionComparable
end
Theme =
::Data.define(:name, :source, :hooks, :env) do
  include ExtensionComparable
end
Data =
::Data.define(:plugins, :themes, :env, :version) do
  def initialize(plugins:, themes:, env: nil, version: nil)
    super
  end

  def envs
    (plugins.map(&:env) + themes.map(&:env)).uniq.sort
  end

  def diff(other)
    Definition::Diff.new(self, other)
  end
end

Class Method Summary collapse

Class Method Details

.dirObject



29
30
31
# File 'lib/rexer/definition.rb', line 29

def self.dir
  @dir ||= find_difinition_dir
end

.fileObject



33
34
35
# File 'lib/rexer/definition.rb', line 33

def self.file
  @file ||= dir.join(Rexer.definition_file)
end

.load_dataObject



37
38
39
40
41
42
# File 'lib/rexer/definition.rb', line 37

def self.load_data
  dsl = Dsl.new.tap { _1.instance_eval(file.read) }
  dsl.to_data
rescue DefinitionFileNotFound
  nil
end