class Lolcommits::Configuration
Constants
- LOLBASEDIR
- LOLCOMMITS_ROOT
Attributes
loldir[W]
Public Class Methods
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 148 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 140 def self.git_config_color_always? `git config color.ui`.chomp =~ /always/ end
is_fakecapture?()
click to toggle source
# File lib/lolcommits/configuration.rb, line 128 def self.is_fakecapture? (ENV['LOLCOMMITS_FAKECAPTURE'] == '1' || false) end
is_linux?()
click to toggle source
# File lib/lolcommits/configuration.rb, line 120 def self.is_linux? RUBY_PLATFORM.to_s.downcase.include?("linux") end
is_mac?()
click to toggle source
# File lib/lolcommits/configuration.rb, line 116 def self.is_mac? RUBY_PLATFORM.to_s.downcase.include?("darwin") end
is_windows?()
click to toggle source
# File lib/lolcommits/configuration.rb, line 124 def self.is_windows? !! RUBY_PLATFORM.match(/(win|w)32/) end
loldir_for(basename)
click to toggle source
# File lib/lolcommits/configuration.rb, line 48 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_fakecapture? 'Fake' elsif is_mac? 'Mac' elsif is_linux? 'Linux' elsif is_windows? 'Windows' else raise "Unknown / Unsupported Platform." end end
valid_imagemagick_installed?()
click to toggle source
# File lib/lolcommits/configuration.rb, line 132 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
do_configure!(plugin, forced_options=nil)
click to toggle source
# File lib/lolcommits/configuration.rb, line 74 def do_configure!(plugin, forced_options=nil) if plugin.nil? || plugin.strip == '' puts_plugins print "Name of plugin to configure: " plugin = STDIN.gets.strip end plugins = Lolcommits::PLUGINS.inject(Hash.new) do |acc, val| p = val.new(nil) acc.merge(p.name => p) end plugin_object = plugins[plugin] if plugin_object.nil? puts "Unable to find plugin: #{plugin}" return end if forced_options.nil? options = plugin_object.options.inject(Hash.new) do |acc, option| print "#{option}: " val = STDIN.gets.strip val = true if val == 'true' val = false if val == 'false' acc.merge(option => val) end else options = forced_options end config = self.user_configuration || Hash.new config[plugin] = options File.open(self.user_configuration_file, 'w') do |f| f.write(config.to_yaml) end puts "#{config.to_yaml}\n" puts "Successfully Configured" end
loldir()
click to toggle source
# File lib/lolcommits/configuration.rb, line 39 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)
click to toggle source
# File lib/lolcommits/configuration.rb, line 65 def main_image(commit_sha) File.join self.loldir, "#{commit_sha}.jpg" end
most_recent()
click to toggle source
# File lib/lolcommits/configuration.rb, line 57 def most_recent Dir.glob(File.join self.loldir, "*").max_by {|f| File.mtime(f)} end
puts_plugins()
click to toggle source
# File lib/lolcommits/configuration.rb, line 69 def puts_plugins names = Lolcommits::PLUGINS.collect {|p| p.new(nil).name } puts "Available plugins: #{names.join(', ')}" end
raw_image()
click to toggle source
# File lib/lolcommits/configuration.rb, line 61 def raw_image File.join self.loldir, "tmp_snapshot.jpg" end
user_configuration()
click to toggle source
# File lib/lolcommits/configuration.rb, line 27 def user_configuration if File.exists?(user_configuration_file) YAML.load(File.open(user_configuration_file)) else nil end end
user_configuration_file()
click to toggle source
# File lib/lolcommits/configuration.rb, line 35 def user_configuration_file "#{self.loldir}/config.yml" end