Class: Lolcommits::Configuration
- Inherits:
-
Object
- Object
- Lolcommits::Configuration
- Defined in:
- lib/lolcommits/configuration.rb
Constant Summary collapse
- LOLCOMMITS_BASE =
ENV['LOLCOMMITS_DIR'] || File.join(ENV['HOME'], '.lolcommits')
- LOLCOMMITS_ROOT =
File.join(File.dirname(__FILE__), '../..')
Instance Attribute Summary collapse
Class Method Summary collapse
-
.loldir_for(basename) ⇒ Object
class methods.
Instance Method Summary collapse
- #archivedir ⇒ Object
- #ask_for_plugin_name ⇒ Object
- #configuration_file ⇒ Object
- #do_configure!(plugin_name) ⇒ Object
- #find_plugin(plugin_name) ⇒ Object
- #frames_loc ⇒ Object
-
#initialize(attributes = {}) ⇒ Configuration
constructor
A new instance of Configuration.
- #jpg_images ⇒ Object
- #jpg_images_today ⇒ Object
- #main_image(commit_sha, image_file_type = 'jpg') ⇒ Object
- #most_recent ⇒ Object
- #puts_plugins ⇒ Object
- #raw_image(image_file_type = 'jpg') ⇒ Object
- #read_configuration ⇒ Object
- #save(config) ⇒ Object
- #to_s ⇒ Object
- #video_loc ⇒ Object
Constructor Details
#initialize(attributes = {}) ⇒ Configuration
Returns a new instance of Configuration.
9 10 11 12 13 |
# File 'lib/lolcommits/configuration.rb', line 9 def initialize(attributes = {}) attributes.each do |attr, val| send("#{attr}=", val) end end |
Instance Attribute Details
#loldir ⇒ Object
24 25 26 27 28 29 |
# File 'lib/lolcommits/configuration.rb', line 24 def loldir return @loldir if @loldir basename ||= File.basename(Git.open('.').dir.to_s).sub(/^\./, 'dot') basename.sub!(/ /, '-') @loldir = Configuration.loldir_for(basename) end |
Class Method Details
.loldir_for(basename) ⇒ Object
class methods
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/lolcommits/configuration.rb', line 116 def self.loldir_for(basename) loldir = File.join(LOLCOMMITS_BASE, basename) if File.directory? loldir begin # ensure 755 permissions for loldir File.chmod(0755, loldir) rescue Errno::EPERM # abort if permissions cannot be met puts "FATAL: directory '#{loldir}' should be present and writeable by user '#{ENV['USER']}'" puts 'Try changing the directory permissions to 755' exit 1 end else FileUtils.mkdir_p loldir end loldir end |
Instance Method Details
#archivedir ⇒ Object
31 32 33 34 35 |
# File 'lib/lolcommits/configuration.rb', line 31 def archivedir dir = File.join(loldir, 'archive') FileUtils.mkdir_p dir unless File.directory? dir dir end |
#ask_for_plugin_name ⇒ Object
69 70 71 72 73 |
# File 'lib/lolcommits/configuration.rb', line 69 def ask_for_plugin_name puts_plugins print 'Name of plugin to configure: ' STDIN.gets.strip end |
#configuration_file ⇒ Object
20 21 22 |
# File 'lib/lolcommits/configuration.rb', line 20 def configuration_file "#{loldir}/config.yml" end |
#do_configure!(plugin_name) ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/lolcommits/configuration.rb', line 84 def do_configure!(plugin_name) plugin_name = ask_for_plugin_name if plugin_name.to_s.strip.empty? plugin = find_plugin(plugin_name) return unless plugin config = read_configuration || {} plugin_config = plugin. # 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} at path '#{configuration_file}'" else puts "\nAborted plugin configuration for: #{plugin_name}" end end |
#find_plugin(plugin_name) ⇒ Object
75 76 77 78 79 80 81 82 |
# File 'lib/lolcommits/configuration.rb', line 75 def find_plugin(plugin_name) Lolcommits::Runner.plugins.each do |plugin| return plugin.new(nil) if plugin.name == plugin_name end puts "Unable to find plugin: '#{plugin_name}'" puts_plugins end |
#frames_loc ⇒ Object
61 62 63 |
# File 'lib/lolcommits/configuration.rb', line 61 def frames_loc File.join(loldir, 'tmp_frames') end |
#jpg_images ⇒ Object
41 42 43 |
# File 'lib/lolcommits/configuration.rb', line 41 def jpg_images Dir.glob(File.join(loldir, '*.jpg')).sort_by { |f| File.mtime(f) } end |
#jpg_images_today ⇒ Object
45 46 47 |
# File 'lib/lolcommits/configuration.rb', line 45 def jpg_images_today jpg_images.select { |f| Date.parse(File.mtime(f).to_s) == Date.today } end |
#main_image(commit_sha, image_file_type = 'jpg') ⇒ Object
53 54 55 |
# File 'lib/lolcommits/configuration.rb', line 53 def main_image(commit_sha, image_file_type = 'jpg') File.join loldir, "#{commit_sha}.#{image_file_type}" end |
#most_recent ⇒ Object
37 38 39 |
# File 'lib/lolcommits/configuration.rb', line 37 def most_recent Dir.glob(File.join(loldir, '*.{jpg,gif}')).max_by { |f| File.mtime(f) } end |
#puts_plugins ⇒ Object
65 66 67 |
# File 'lib/lolcommits/configuration.rb', line 65 def puts_plugins puts "Available plugins: #{Lolcommits::Runner.plugins.map(&:name).join(', ')}" end |
#raw_image(image_file_type = 'jpg') ⇒ Object
49 50 51 |
# File 'lib/lolcommits/configuration.rb', line 49 def raw_image(image_file_type = 'jpg') File.join loldir, "tmp_snapshot.#{image_file_type}" end |
#read_configuration ⇒ Object
15 16 17 18 |
# File 'lib/lolcommits/configuration.rb', line 15 def read_configuration return unless File.exist?(configuration_file) YAML.load(File.open(configuration_file)) end |
#save(config) ⇒ Object
103 104 105 106 107 108 |
# File 'lib/lolcommits/configuration.rb', line 103 def save(config) config_file_contents = config.to_yaml File.open(configuration_file, 'w') do |f| f.write(config_file_contents) end end |
#to_s ⇒ Object
110 111 112 |
# File 'lib/lolcommits/configuration.rb', line 110 def to_s read_configuration.to_yaml.to_s end |
#video_loc ⇒ Object
57 58 59 |
# File 'lib/lolcommits/configuration.rb', line 57 def video_loc File.join(loldir, 'tmp_video.mov') end |