Sha256: d4701147bf86153d5250f46be742c7871a782ef2c344660c588157c7cebc8bd2

Contents?: true

Size: 1.24 KB

Versions: 7

Compression:

Stored size: 1.24 KB

Contents

# -*- encoding: utf-8 -*-
require 'lolcommits/cli/fatals'

require 'mini_magick'

module Lolcommits
  module CLI
    # Creates an animated timeline GIF of lolcommits history.
    class TimelapseGif
      # param config [Lolcommits::Configuration]
      def initialize(config)
        @configuration = config
      end

      # Runs the history timeline animator task thingy
      # param args [String] the arg passed to the gif command on CLI (optional)
      def run(args = nil)
        Fatals.die_if_not_git_repo!

        case args
        when 'today'
          lolimages = @configuration.jpg_images_today
          filename  = "#{Date.today}.gif"
        else
          lolimages = @configuration.jpg_images
          filename  = 'archive.gif'
        end

        if lolimages.empty?
          warn 'No lolcommits have been captured for this time yet.'
          exit 1
        end

        puts '*** Generating animated gif.'

        gif = MiniMagick::Image.new File.join @configuration.archivedir, filename

        # This is for ruby 1.8.7, *lolimages just doesn't work with ruby 187
        gif.run_command('convert', *['-delay', '50', '-loop', '0', lolimages, gif.path.to_s].flatten)

        puts "*** #{gif.path} generated."
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
snapgit-0.6.5 lib/lolcommits/cli/timelapse_gif.rb
snapgit-0.6.4 lib/lolcommits/cli/timelapse_gif.rb
lolcommits-0.6.4 lib/lolcommits/cli/timelapse_gif.rb
lolcommits-0.6.3 lib/lolcommits/cli/timelapse_gif.rb
lolcommits-0.6.3.pre1 lib/lolcommits/cli/timelapse_gif.rb
lolcommits-0.6.2 lib/lolcommits/cli/timelapse_gif.rb
lolcommits-0.6.2.pre1 lib/lolcommits/cli/timelapse_gif.rb