class Lolcommits::CLI::TimelapseGif
Creates an animated timeline GIF of lolcommits history.
Attributes
loldir[RW]
Public Class Methods
new(loldir)
click to toggle source
param loldir [String] path to loldir
# File lib/lolcommits/cli/timelapse_gif.rb, line 11 def initialize(loldir) self.loldir = loldir end
Public Instance Methods
run(args = nil)
click to toggle source
Runs the history timeline animator task thingy param args [String] the arg passed to the gif command on CLI
(optional)
# File lib/lolcommits/cli/timelapse_gif.rb, line 17 def run(args = nil) case args when 'today' lolimages = jpg_images_today filename = Date.today.to_s else lolimages = jpg_images filename = "all-until-#{Time.now.strftime('%d-%b-%Y--%Hh%Mm%Ss')}" end if lolimages.empty? warn 'No lolcommits have been captured for this time yet.' exit 1 end puts '*** Generating animated timelapse gif.' gif = MiniMagick::Image.new(File.join(timelapses_dir_path, "#{filename}.gif")) gif.run_command('convert', *['-delay', '50', '-loop', '0', lolimages, gif.path].flatten) puts "*** Done, generated at #{gif.path}" end
Private Instance Methods
jpg_images()
click to toggle source
# File lib/lolcommits/cli/timelapse_gif.rb, line 44 def jpg_images Dir.glob(File.join(loldir, '*.jpg')).sort_by { |f| File.mtime(f) } end
jpg_images_today()
click to toggle source
# File lib/lolcommits/cli/timelapse_gif.rb, line 48 def jpg_images_today jpg_images.select { |f| Date.parse(File.mtime(f).to_s) == Date.today } end
timelapses_dir_path()
click to toggle source
# File lib/lolcommits/cli/timelapse_gif.rb, line 52 def timelapses_dir_path dir = File.join(loldir, 'timelapses') FileUtils.mkdir_p(dir) dir end