Class: Lolcommits::Runner

Inherits:
Object
  • Object
show all
Defined in:
lib/lolcommits/runner.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attributes = {}) ⇒ Runner

Returns a new instance of Runner.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/lolcommits/runner.rb', line 13

def initialize(attributes = {})
  attributes.each do |attr, val|
    send("#{attr}=", val)
  end

  if GitInfo.repo_root?
    self.vcs_info = GitInfo.new
  elsif MercurialInfo.repo_root?
    self.vcs_info = MercurialInfo.new
  end

  if vcs_info
    self.sha ||= vcs_info.sha
    self.message ||= vcs_info.message
  end

  return unless config

  self.capture_path       = config.capture_path(lolcommit_ext)
  self.lolcommit_path     = config.sha_path(sha, lolcommit_ext)
  self.lolcommit_gif_path = config.sha_path(sha, 'gif') if capture_gif
end

Instance Attribute Details

#capture_delayObject

Returns the value of attribute capture_delay.



8
9
10
# File 'lib/lolcommits/runner.rb', line 8

def capture_delay
  @capture_delay
end

#capture_deviceObject

Returns the value of attribute capture_device.



8
9
10
# File 'lib/lolcommits/runner.rb', line 8

def capture_device
  @capture_device
end

#capture_durationObject

Returns the value of attribute capture_duration.



8
9
10
# File 'lib/lolcommits/runner.rb', line 8

def capture_duration
  @capture_duration
end

#capture_gifObject

Returns the value of attribute capture_gif.



8
9
10
# File 'lib/lolcommits/runner.rb', line 8

def capture_gif
  @capture_gif
end

#capture_pathObject

Returns the value of attribute capture_path.



8
9
10
# File 'lib/lolcommits/runner.rb', line 8

def capture_path
  @capture_path
end

#capture_stealthObject

Returns the value of attribute capture_stealth.



8
9
10
# File 'lib/lolcommits/runner.rb', line 8

def capture_stealth
  @capture_stealth
end

#capture_videoObject

Returns the value of attribute capture_video.



8
9
10
# File 'lib/lolcommits/runner.rb', line 8

def capture_video
  @capture_video
end

#configObject

Returns the value of attribute config.



8
9
10
# File 'lib/lolcommits/runner.rb', line 8

def config
  @config
end

#lolcommit_gif_pathObject

Returns the value of attribute lolcommit_gif_path.



8
9
10
# File 'lib/lolcommits/runner.rb', line 8

def lolcommit_gif_path
  @lolcommit_gif_path
end

#lolcommit_pathObject

Returns the value of attribute lolcommit_path.



8
9
10
# File 'lib/lolcommits/runner.rb', line 8

def lolcommit_path
  @lolcommit_path
end

#messageObject

Returns the value of attribute message.



8
9
10
# File 'lib/lolcommits/runner.rb', line 8

def message
  @message
end

#shaObject

Returns the value of attribute sha.



8
9
10
# File 'lib/lolcommits/runner.rb', line 8

def sha
  @sha
end

#vcs_infoObject

Returns the value of attribute vcs_info.



8
9
10
# File 'lib/lolcommits/runner.rb', line 8

def vcs_info
  @vcs_info
end

Instance Method Details

#capture_image?Boolean

Returns:

  • (Boolean)


79
80
81
# File 'lib/lolcommits/runner.rb', line 79

def capture_image?
  capture_duration.to_i.zero?
end

#overlayObject

return MiniMagick overlay png for manipulation (or create one)



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/lolcommits/runner.rb', line 58

def overlay
  @overlay ||= begin
    source_path = capture_image? ? lolcommit_path : capture_path
    unless File.exist?(source_path)
      raise "too early to overlay, capture doesn't exist yet"
    end

    base = MiniMagick::Image.open(source_path)
    png_tempfile = MiniMagick::Utilities.tempfile('.png')
    debug("creating a new empty overlay png for lolcommit (#{base.dimensions.join('x')})")

    MiniMagick::Tool::Convert.new do |i|
      i.size "#{base.width}x#{base.height}"
      i.xc 'transparent'
      i << png_tempfile.path
    end

    MiniMagick::Image.open(png_tempfile.path)
  end
end

#runObject



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/lolcommits/runner.rb', line 36

def run
  execute_plugins_for(:pre_capture)

  # main capture
  run_capture

  # capture must exist to run post capture methods
  unless File.exist?(capture_path)
    raise 'failed to capture any image or video!'
  end

  run_post_capture
  run_capture_ready
rescue StandardError => e
  debug("#{e.class}: #{e.message}")
  exit 1
ensure
  debug 'running cleanup'
  FileUtils.rm_f(capture_path)
end