class Lolcommits::Configuration

Constants

LOLBASEDIR
LOLCOMMITS_ROOT

Attributes

loldir[W]

Public Class Methods

can_animate?() click to toggle source
# File lib/lolcommits/configuration.rb, line 190
def self.can_animate?
  platform == 'Mac'
end
command_which(cmd) click to toggle source

Cross-platform way of finding an executable in the $PATH. idea taken from bit.ly/qDaTbY

which('ruby') #=> /usr/bin/ruby
# File lib/lolcommits/configuration.rb, line 198
def self.command_which(cmd)
  exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
  ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
    exts.each { |ext|
      exe = "#{path}/#{cmd}#{ext}"
      return exe if File.executable? exe
    }
  end
  return nil
end
git_config_color_always?() click to toggle source
# File lib/lolcommits/configuration.rb, line 186
def self.git_config_color_always?
  `git config color.ui`.chomp =~ /always/
end
is_cygwin?() click to toggle source
# File lib/lolcommits/configuration.rb, line 162
def self.is_cygwin?
  RUBY_PLATFORM.to_s.downcase.include?("cygwin")
end
is_fakecapture?() click to toggle source
# File lib/lolcommits/configuration.rb, line 166
def self.is_fakecapture?
  (ENV['LOLCOMMITS_FAKECAPTURE'] == '1' || false)
end
is_fakeplatform?() click to toggle source
# File lib/lolcommits/configuration.rb, line 170
def self.is_fakeplatform?
  ENV['LOLCOMMITS_FAKEPLATFORM']
end
is_linux?() click to toggle source
# File lib/lolcommits/configuration.rb, line 154
def self.is_linux?
  RUBY_PLATFORM.to_s.downcase.include?("linux")
end
is_mac?() click to toggle source
# File lib/lolcommits/configuration.rb, line 150
def self.is_mac?
  RUBY_PLATFORM.to_s.downcase.include?("darwin")
end
is_windows?() click to toggle source
# File lib/lolcommits/configuration.rb, line 158
def self.is_windows?
  !! RUBY_PLATFORM.match(/(win|w)32/)
end
loldir_for(basename) click to toggle source
# File lib/lolcommits/configuration.rb, line 60
def self.loldir_for(basename)
  loldir = File.join(LOLBASEDIR, basename)

  if not File.directory? loldir
    FileUtils.mkdir_p loldir
  end
  loldir
end
new(attributes={}) click to toggle source
# File lib/lolcommits/configuration.rb, line 7
def initialize(attributes={})
  attributes.each do |attr, val|
    self.send("#{attr}=", val)
  end
end
platform() click to toggle source
# File lib/lolcommits/configuration.rb, line 13
def self.platform
  if is_fakeplatform?
    ENV['LOLCOMMITS_FAKEPLATFORM']
  elsif is_fakecapture?
    'Fake'
  elsif is_mac?
    'Mac'
  elsif is_linux?
    'Linux'
  elsif is_windows?
    'Windows'
  elsif is_cygwin?
    'Cygwin'
  else
    raise "Unknown / Unsupported Platform."
  end
end
valid_ffmpeg_installed?() click to toggle source
# File lib/lolcommits/configuration.rb, line 182
def self.valid_ffmpeg_installed?
  self.command_which('ffmpeg')
end
valid_imagemagick_installed?() click to toggle source
# File lib/lolcommits/configuration.rb, line 174
def self.valid_imagemagick_installed?
  return false unless self.command_which('identify')
  return false unless self.command_which('mogrify')
  # you'd expect the below to work on its own, but it only handles old versions
  # and will throw an exception if IM is not installed in PATH
  MiniMagick::valid_version_installed?
end

Public Instance Methods

archivedir() click to toggle source
# File lib/lolcommits/configuration.rb, line 52
def archivedir
  dir = File.join(loldir, 'archive')
  if not File.directory? dir
    FileUtils.mkdir_p dir
  end
  dir
end
ask_for_plugin_name() click to toggle source
# File lib/lolcommits/configuration.rb, line 101
def ask_for_plugin_name
  puts_plugins
  print "Name of plugin to configure: "
  STDIN.gets.strip
end
configuration_file() click to toggle source
# File lib/lolcommits/configuration.rb, line 39
def configuration_file
  "#{self.loldir}/config.yml"
end
do_configure!(plugin_name) click to toggle source
# File lib/lolcommits/configuration.rb, line 118
def do_configure!(plugin_name)
  if plugin_name.to_s.strip.empty?
    plugin_name = ask_for_plugin_name
  end

  if plugin = find_plugin(plugin_name)
    config = self.read_configuration || Hash.new
    plugin_config = plugin.configure_options!
    # having a plugin_config, means configuring went OK
    if plugin_config
      # save plugin and print config
      config[plugin_name] = plugin_config
      save(config)
      puts self
      puts "\nSuccessfully configured plugin: #{plugin_name}"
    else
      puts "\nAborted plugin configuration for: #{plugin_name}"
    end
  end
end
find_plugin(plugin_name) click to toggle source
# File lib/lolcommits/configuration.rb, line 107
def find_plugin(plugin_name)
  Lolcommits::PLUGINS.each do |plugin|
    if plugin.name == plugin_name
      return plugin.new(nil)
    end
  end

  puts "Unable to find plugin: '#{plugin_name}'"
  puts_plugins
end
frames_loc() click to toggle source
# File lib/lolcommits/configuration.rb, line 93
def frames_loc
  File.join(self.loldir, 'tmp_frames')
end
images() click to toggle source
# File lib/lolcommits/configuration.rb, line 73
def images
  Dir.glob(File.join self.loldir, "*.jpg").sort_by {|f| File.mtime(f)}
end
images_today() click to toggle source
# File lib/lolcommits/configuration.rb, line 77
def images_today
  images.select { |f| Date.parse(File.mtime(f).to_s) === Date.today }
end
loldir() click to toggle source
# File lib/lolcommits/configuration.rb, line 43
def loldir
  return @loldir if @loldir

  basename ||= File.basename(Git.open('.').dir.to_s).sub(/^\./, 'dot')
  basename.sub!(/ /, '-')

  @loldir = Configuration.loldir_for(basename)
end
main_image(commit_sha, image_file_type = 'jpg') click to toggle source
# File lib/lolcommits/configuration.rb, line 85
def main_image(commit_sha, image_file_type = 'jpg')
  File.join self.loldir, "#{commit_sha}.#{image_file_type}"
end
most_recent() click to toggle source
# File lib/lolcommits/configuration.rb, line 69
def most_recent
  Dir.glob(File.join self.loldir, "*.jpg").max_by {|f| File.mtime(f)}
end
puts_plugins() click to toggle source
# File lib/lolcommits/configuration.rb, line 97
def puts_plugins
  puts "Available plugins: #{Lolcommits::PLUGINS.map(&:name).join(', ')}"
end
raw_image(image_file_type = 'jpg') click to toggle source
# File lib/lolcommits/configuration.rb, line 81
def raw_image(image_file_type = 'jpg')
  File.join self.loldir, "tmp_snapshot.#{image_file_type}"
end
read_configuration() click to toggle source
# File lib/lolcommits/configuration.rb, line 31
def read_configuration
  if File.exists?(configuration_file)
    YAML.load(File.open(configuration_file))
  else
    nil
  end
end
save(config) click to toggle source
# File lib/lolcommits/configuration.rb, line 139
def save(config)
  config_file_contents = config.to_yaml
  File.open(self.configuration_file, 'w') do |f|
    f.write(config_file_contents)
  end
end
to_s() click to toggle source
# File lib/lolcommits/configuration.rb, line 146
def to_s
  read_configuration.to_yaml.to_s
end
video_loc() click to toggle source
# File lib/lolcommits/configuration.rb, line 89
def video_loc
  File.join(self.loldir, 'tmp_video.mov')
end