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 30 31 32 33 34 |
# File 'lib/lolcommits/configuration.rb', line 24 def loldir return @loldir if @loldir basename ||= if VCSInfo.repo_root? VCSInfo.local_name else File.basename(Dir.getwd) end basename.sub!(/^\./, 'dot') basename.sub!(/ /, '-') @loldir = Configuration.loldir_for(basename) end |
Class Method Details
.loldir_for(basename) ⇒ Object
class methods
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/lolcommits/configuration.rb', line 121 def self.loldir_for(basename) loldir = File.join(LOLCOMMITS_BASE, basename) if File.directory? loldir begin # ensure 755 permissions for loldir File.chmod(0o755, 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
36 37 38 39 40 |
# File 'lib/lolcommits/configuration.rb', line 36 def archivedir dir = File.join(loldir, 'archive') FileUtils.mkdir_p dir unless File.directory? dir dir end |
#ask_for_plugin_name ⇒ Object
74 75 76 77 78 |
# File 'lib/lolcommits/configuration.rb', line 74 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
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/lolcommits/configuration.rb', line 89 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
80 81 82 83 84 85 86 87 |
# File 'lib/lolcommits/configuration.rb', line 80 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
66 67 68 |
# File 'lib/lolcommits/configuration.rb', line 66 def frames_loc File.join(loldir, 'tmp_frames') end |
#jpg_images ⇒ Object
46 47 48 |
# File 'lib/lolcommits/configuration.rb', line 46 def jpg_images Dir.glob(File.join(loldir, '*.jpg')).sort_by { |f| File.mtime(f) } end |
#jpg_images_today ⇒ Object
50 51 52 |
# File 'lib/lolcommits/configuration.rb', line 50 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
58 59 60 |
# File 'lib/lolcommits/configuration.rb', line 58 def main_image(commit_sha, image_file_type = 'jpg') File.join loldir, "#{commit_sha}.#{image_file_type}" end |
#most_recent ⇒ Object
42 43 44 |
# File 'lib/lolcommits/configuration.rb', line 42 def most_recent Dir.glob(File.join(loldir, '*.{jpg,gif}')).max_by { |f| File.mtime(f) } end |
#puts_plugins ⇒ Object
70 71 72 |
# File 'lib/lolcommits/configuration.rb', line 70 def puts_plugins puts "Available plugins: #{Lolcommits::Runner.plugins.map(&:name).join(', ')}" end |
#raw_image(image_file_type = 'jpg') ⇒ Object
54 55 56 |
# File 'lib/lolcommits/configuration.rb', line 54 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
108 109 110 111 112 113 |
# File 'lib/lolcommits/configuration.rb', line 108 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
115 116 117 |
# File 'lib/lolcommits/configuration.rb', line 115 def to_s read_configuration.to_yaml.to_s end |
#video_loc ⇒ Object
62 63 64 |
# File 'lib/lolcommits/configuration.rb', line 62 def video_loc File.join(loldir, 'tmp_video.mov') end |