Class: Lolcommits::Configuration

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

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

#loldirObject



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

#archivedirObject



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_nameObject



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_fileObject



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.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} 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_locObject



61
62
63
# File 'lib/lolcommits/configuration.rb', line 61

def frames_loc
  File.join(loldir, 'tmp_frames')
end

#jpg_imagesObject



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_todayObject



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_recentObject



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_pluginsObject



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_configurationObject



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_sObject



110
111
112
# File 'lib/lolcommits/configuration.rb', line 110

def to_s
  read_configuration.to_yaml.to_s
end

#video_locObject



57
58
59
# File 'lib/lolcommits/configuration.rb', line 57

def video_loc
  File.join(loldir, 'tmp_video.mov')
end