class Spud::TaskRunners::Make::Task

Attributes

name[R]

Public Class Methods

new(driver, name, make_source) click to toggle source
# File lib/spud/task_runners/make/task.rb, line 33
def initialize(driver, name, make_source)
  @driver = driver
  @name = name
  @make_source = make_source
end
tasks(driver) click to toggle source
# File lib/spud/task_runners/make/task.rb, line 18
def self.tasks(driver)
  return [] unless File.exist?('Makefile')

  if `command -v make`.empty?
    puts 'Makefile detected, but no installation of `make` exists. Skipping make...'
    return []
  end

  source = File.read('Makefile')
  T.unsafe(source.scan(/^(\S+):.*/)).map(&:first).map do |name|
    new(driver, name, source)
  end
end

Public Instance Methods

details() click to toggle source
# File lib/spud/task_runners/make/task.rb, line 50
def details
  lines = @make_source.split("\n")
  cursor = 0

  cursor += 1 until lines[cursor]&.start_with?(name)

  builder = StringIO.new
  while lines[cursor] && !lines[cursor]&.empty?
    builder.puts lines[cursor]
    cursor += 1
  end

  builder.string
end
invoke(ordered, named) click to toggle source
# File lib/spud/task_runners/make/task.rb, line 40
def invoke(ordered, named)
  system("make #{name}")
end
source() click to toggle source
# File lib/spud/task_runners/make/task.rb, line 45
def source
  'Makefile'
end