Class: Spud::TaskRunners::SpudTaskRunner::FileDSL

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/spud/task_runners/spud_task_runner/file_dsl.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(driver, filename) ⇒ FileDSL

Returns a new instance of FileDSL.



21
22
23
24
25
26
# File 'lib/spud/task_runners/spud_task_runner/file_dsl.rb', line 21

def initialize(driver, filename)
  @__driver = driver
  @__filename = filename

  @__tasks = T.let([], T::Array[Task])
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args, &block) ⇒ Object



50
51
52
# File 'lib/spud/task_runners/spud_task_runner/file_dsl.rb', line 50

def method_missing(name, *args, &block)
  T.unsafe(self).task(name, *args, &block)
end

Class Method Details

.run(driver, filename) ⇒ Object



13
14
15
16
17
18
# File 'lib/spud/task_runners/spud_task_runner/file_dsl.rb', line 13

def self.run(driver, filename)
  dsl = new(driver, filename)
  dsl.instance_eval(::File.read(filename), filename)

  dsl.instance_variable_get(:@__tasks)
end

Instance Method Details

#require_relative(name) ⇒ Object



29
30
31
# File 'lib/spud/task_runners/spud_task_runner/file_dsl.rb', line 29

def require_relative(name)
  require("./#{name}")
end

#task(name, dependencies = {}, &block) ⇒ Object



40
41
42
43
44
45
46
47
48
# File 'lib/spud/task_runners/spud_task_runner/file_dsl.rb', line 40

def task(name, dependencies = {}, &block)
  @__tasks << Task.new(
    driver: @__driver,
    name: Task.qualified_name(@__filename, name.to_s),
    filename: @__filename,
    dependencies: dependencies,
    &block
  )
end