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
-
#loldir ⇒ Object
Returns the value of attribute loldir.
-
#plugin_manager ⇒ Object
Returns the value of attribute plugin_manager.
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_option) ⇒ Object
- #frames_loc ⇒ Object
-
#initialize(plugin_manager, test_mode: false) ⇒ Configuration
constructor
A new instance of Configuration.
- #jpg_images ⇒ Object
- #jpg_images_today ⇒ Object
- #list_plugins ⇒ Object
- #main_image(commit_sha, image_file_type = 'jpg') ⇒ Object
- #raw_image(image_file_type = 'jpg') ⇒ Object
- #read_configuration ⇒ Object
- #save(config) ⇒ Object
- #to_s ⇒ Object
- #video_loc ⇒ Object
Constructor Details
#initialize(plugin_manager, test_mode: false) ⇒ Configuration
Returns a new instance of Configuration.
7 8 9 10 |
# File 'lib/lolcommits/configuration.rb', line 7 def initialize(plugin_manager, test_mode: false) @plugin_manager = plugin_manager @loldir = Configuration.loldir_for('test') if test_mode end |
Instance Attribute Details
#loldir ⇒ Object
Returns the value of attribute loldir.
5 6 7 |
# File 'lib/lolcommits/configuration.rb', line 5 def loldir @loldir end |
#plugin_manager ⇒ Object
Returns the value of attribute plugin_manager.
5 6 7 |
# File 'lib/lolcommits/configuration.rb', line 5 def plugin_manager @plugin_manager end |
Class Method Details
.loldir_for(basename) ⇒ Object
class methods
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/lolcommits/configuration.rb', line 120 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
35 36 37 38 39 |
# File 'lib/lolcommits/configuration.rb', line 35 def archivedir dir = File.join(loldir, 'archive') FileUtils.mkdir_p dir unless File.directory? dir dir end |
#ask_for_plugin_name ⇒ Object
81 82 83 84 85 |
# File 'lib/lolcommits/configuration.rb', line 81 def ask_for_plugin_name list_plugins print 'Name of plugin to configure: ' gets.strip end |
#configuration_file ⇒ Object
19 20 21 |
# File 'lib/lolcommits/configuration.rb', line 19 def configuration_file "#{loldir}/config.yml" end |
#do_configure!(plugin_name) ⇒ Object
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/lolcommits/configuration.rb', line 87 def do_configure!(plugin_name) $stdout.sync = true plugin = find_plugin(plugin_name.to_s.strip) return unless plugin config = read_configuration || {} plugin_name = plugin.class.name 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_option) ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/lolcommits/configuration.rb', line 69 def find_plugin(plugin_name_option) plugin_name = plugin_name_option.empty? ? ask_for_plugin_name : plugin_name_option return if plugin_name.empty? plugin_klass = plugin_manager.find_by_name(plugin_name) return plugin_klass.new(nil) if plugin_klass puts "Unable to find plugin: '#{plugin_name}'" return if plugin_name_option.empty? list_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 |
#list_plugins ⇒ Object
65 66 67 |
# File 'lib/lolcommits/configuration.rb', line 65 def list_plugins puts "Available plugins: \n * #{plugin_manager.plugin_names.join("\n * ")}" 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 |
#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
12 13 14 15 16 17 |
# File 'lib/lolcommits/configuration.rb', line 12 def read_configuration return unless File.exist?(configuration_file) # TODO: change to safe_load when Ruby 2.0.0 support drops # YAML.safe_load(File.open(configuration_file), [Symbol]) YAML.load(File.open(configuration_file)) end |
#save(config) ⇒ Object
107 108 109 110 111 112 |
# File 'lib/lolcommits/configuration.rb', line 107 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
114 115 116 |
# File 'lib/lolcommits/configuration.rb', line 114 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 |