lolcommits 0.17.2 → 0.17.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/{build.yml → ci.yml} +29 -24
  3. data/.gitignore +2 -0
  4. data/.quickhook/pre-commit/ruby-lint +3 -0
  5. data/.rubocop.yml +309 -9
  6. data/CHANGELOG.md +45 -234
  7. data/CODE_OF_CONDUCT.md +10 -12
  8. data/Gemfile +4 -2
  9. data/README.md +14 -26
  10. data/Rakefile +11 -48
  11. data/bin/cucumber +25 -0
  12. data/bin/lolcommits +2 -12
  13. data/bin/rubocop +25 -0
  14. data/features/step_definitions/lolcommits_steps.rb +0 -2
  15. data/features/support/env.rb +1 -3
  16. data/features/support/path_helpers.rb +2 -4
  17. data/lib/core_ext/mercurial-ruby/changed_file.rb +1 -3
  18. data/lib/core_ext/mercurial-ruby/command.rb +2 -4
  19. data/lib/core_ext/mercurial-ruby/config_file.rb +0 -2
  20. data/lib/core_ext/mercurial-ruby/repository.rb +0 -2
  21. data/lib/core_ext/mercurial-ruby/shell.rb +1 -3
  22. data/lib/lolcommits/animated_gif.rb +12 -7
  23. data/lib/lolcommits/backends/git_info.rb +6 -8
  24. data/lib/lolcommits/backends/installation_git.rb +8 -10
  25. data/lib/lolcommits/backends/installation_mercurial.rb +8 -10
  26. data/lib/lolcommits/backends/mercurial_info.rb +9 -11
  27. data/lib/lolcommits/capturer/capture_cygwin.rb +0 -2
  28. data/lib/lolcommits/capturer/capture_fake.rb +2 -4
  29. data/lib/lolcommits/capturer/capture_linux.rb +4 -6
  30. data/lib/lolcommits/capturer/capture_linux_video.rb +1 -3
  31. data/lib/lolcommits/capturer/capture_mac.rb +2 -4
  32. data/lib/lolcommits/capturer/capture_mac_video.rb +1 -3
  33. data/lib/lolcommits/capturer/capture_windows.rb +2 -4
  34. data/lib/lolcommits/capturer/capture_windows_video.rb +5 -7
  35. data/lib/lolcommits/capturer.rb +9 -12
  36. data/lib/lolcommits/cli/fatals.rb +11 -16
  37. data/lib/lolcommits/cli/launcher.rb +1 -3
  38. data/lib/lolcommits/cli/process_runner.rb +2 -4
  39. data/lib/lolcommits/cli/timelapse_gif.rb +7 -9
  40. data/lib/lolcommits/cli.rb +6 -6
  41. data/lib/lolcommits/configuration.rb +32 -36
  42. data/lib/lolcommits/gem_plugin.rb +5 -7
  43. data/lib/lolcommits/installation.rb +5 -7
  44. data/lib/lolcommits/platform.rb +14 -18
  45. data/lib/lolcommits/plugin/base.rb +4 -8
  46. data/lib/lolcommits/plugin/configuration_helper.rb +4 -6
  47. data/lib/lolcommits/plugin_manager.rb +1 -3
  48. data/lib/lolcommits/runner.rb +16 -21
  49. data/lib/lolcommits/test_helpers/fake_io.rb +0 -2
  50. data/lib/lolcommits/test_helpers/git_repo.rb +3 -5
  51. data/lib/lolcommits/vcs_info.rb +2 -4
  52. data/lib/lolcommits/version.rb +1 -3
  53. data/lib/lolcommits.rb +26 -30
  54. data/lolcommits.gemspec +23 -24
  55. data/test/permissions_test.rb +7 -9
  56. data/test/test_helper.rb +2 -4
  57. metadata +62 -53
  58. data/.gitattributes +0 -1
  59. data/.github/workflows/push_gem.yml +0 -25
  60. data/.rubocop_todo.yml +0 -97
  61. data/.travis.yml +0 -45
  62. data/bin/console +0 -12
@@ -1,7 +1,5 @@
1
- # frozen_string_literal: true
2
-
3
- require 'lolcommits/platform'
4
- require 'optparse_plus'
1
+ require "lolcommits/platform"
2
+ require "optparse_plus"
5
3
 
6
4
  module Lolcommits
7
5
  module CLI
@@ -16,15 +14,14 @@ module Lolcommits
16
14
  def self.die_on_fatal_platform_conditions!
17
15
  # make sure the capture binaries are in a good state
18
16
  if Platform.platform_mac?
19
- %w(imagesnap videosnap).each do |executable|
20
- next if File.executable? File.join(Configuration::LOLCOMMITS_ROOT, 'vendor', 'ext', executable, executable)
17
+ %w[imagesnap videosnap].each do |executable|
18
+ next if File.executable? File.join(Configuration::LOLCOMMITS_ROOT, "vendor", "ext", executable, executable)
21
19
 
22
- fatal "Couldn't properly execute #{executable} for some reason, " \
23
- 'please file a bug?!'
20
+ fatal "Couldn't properly execute #{executable} for some reason, " + "please file a bug?!"
24
21
  exit 1
25
22
  end
26
23
  elsif Platform.platform_linux?
27
- unless Platform.command_which('mplayer')
24
+ unless Platform.command_which("mplayer")
28
25
  fatal "Couldn't find mplayer in your PATH!"
29
26
  exit 1
30
27
  end
@@ -32,16 +29,14 @@ module Lolcommits
32
29
 
33
30
  # make sure imagemagick is around and good to go
34
31
  unless Platform.valid_imagemagick_installed?
35
- fatal 'FATAL: ImageMagick does not appear to be properly installed!' \
36
- '(or version is too old)'
32
+ fatal "FATAL: ImageMagick does not appear to be properly installed!(or version is too old)"
37
33
  exit 1
38
34
  end
39
35
 
40
36
  # check for a error condition with git config affecting ruby-git
41
37
  return unless Platform.git_config_color_always?
42
38
 
43
- fatal 'Due to a bug in the ruby-git library, git config for color.ui ' \
44
- "cannot be set to 'always'."
39
+ fatal "Due to a bug in the ruby-git library, git config for color.ui " + "cannot be set to 'always'."
45
40
  fatal "Try setting it to 'auto' instead!"
46
41
  exit 1
47
42
  end
@@ -52,15 +47,15 @@ module Lolcommits
52
47
  def self.die_if_no_valid_ffmpeg_installed!
53
48
  return if Platform.valid_ffmpeg_installed?
54
49
 
55
- fatal 'FATAL: ffmpeg does not appear to be properly installed!'
50
+ fatal "FATAL: ffmpeg does not appear to be properly installed!"
56
51
  exit 1
57
52
  end
58
53
 
59
54
  # If we are not in a git repo, we can't do git related things!
60
55
  # Die with an informative error message in that case.
61
56
  def self.die_if_not_vcs_repo!
62
- debug 'Checking for valid VCS repo'
63
- current = File.expand_path('.')
57
+ debug "Checking for valid VCS repo"
58
+ current = File.expand_path(".")
64
59
  parent = File.dirname(current)
65
60
  while current != parent
66
61
  return if VCSInfo.repo_root?(current)
@@ -1,6 +1,4 @@
1
- # frozen_string_literal: true
2
-
3
- require 'launchy'
1
+ require "launchy"
4
2
 
5
3
  module Lolcommits
6
4
  module CLI
@@ -1,6 +1,4 @@
1
- # frozen_string_literal: true
2
-
3
- require 'fileutils'
1
+ require "fileutils"
4
2
 
5
3
  module Lolcommits
6
4
  module CLI
@@ -43,7 +41,7 @@ module Lolcommits
43
41
  end
44
42
 
45
43
  def pid_file
46
- File.join(@configuration.loldir, 'lolcommits.pid')
44
+ File.join(@configuration.loldir, "lolcommits.pid")
47
45
  end
48
46
  end
49
47
  end
@@ -1,7 +1,5 @@
1
- # frozen_string_literal: true
2
-
3
- require 'lolcommits/cli/fatals'
4
- require 'mini_magick'
1
+ require "lolcommits/cli/fatals"
2
+ require "mini_magick"
5
3
 
6
4
  module Lolcommits
7
5
  module CLI
@@ -16,7 +14,7 @@ module Lolcommits
16
14
  # param args [String] the arg passed to the gif command on CLI (optional)
17
15
  def run(args = nil)
18
16
  case args
19
- when 'today'
17
+ when "today"
20
18
  lolimages = jpg_images_today
21
19
  filename = Date.today.to_s
22
20
  else
@@ -25,11 +23,11 @@ module Lolcommits
25
23
  end
26
24
 
27
25
  if lolimages.empty?
28
- warn 'No lolcommits have been captured for this time yet.'
26
+ warn "No lolcommits have been captured for this time yet."
29
27
  exit 1
30
28
  end
31
29
 
32
- puts '*** Generating animated timelapse gif.'
30
+ puts "*** Generating animated timelapse gif."
33
31
 
34
32
  MiniMagick.convert do |convert|
35
33
  convert.delay 50
@@ -46,7 +44,7 @@ module Lolcommits
46
44
  attr_accessor :loldir
47
45
 
48
46
  def jpg_images
49
- Dir.glob(File.join(loldir, '*.jpg')).sort_by { |f| File.mtime(f) }
47
+ Dir.glob(File.join(loldir, "*.jpg")).sort_by { |f| File.mtime(f) }
50
48
  end
51
49
 
52
50
  def jpg_images_today
@@ -54,7 +52,7 @@ module Lolcommits
54
52
  end
55
53
 
56
54
  def timelapses_dir_path
57
- dir = File.join(loldir, 'timelapses')
55
+ dir = File.join(loldir, "timelapses")
58
56
  FileUtils.mkdir_p(dir)
59
57
  dir
60
58
  end
@@ -1,6 +1,6 @@
1
- # frozen_string_literal: true
2
-
3
- require 'lolcommits/cli/fatals'
4
- require 'lolcommits/cli/launcher'
5
- require 'lolcommits/cli/process_runner'
6
- require 'lolcommits/cli/timelapse_gif'
1
+ require "optparse"
2
+ require "optparse_plus"
3
+ require "lolcommits/cli/fatals"
4
+ require "lolcommits/cli/launcher"
5
+ require "lolcommits/cli/process_runner"
6
+ require "lolcommits/cli/timelapse_gif"
@@ -1,24 +1,41 @@
1
- # frozen_string_literal: true
2
-
3
1
  module Lolcommits
4
2
  class Configuration
5
- LOLCOMMITS_BASE = ENV['LOLCOMMITS_DIR'] || File.join(Dir.home, '.lolcommits')
6
- LOLCOMMITS_ROOT = File.join(File.dirname(__FILE__), '../..')
3
+ LOLCOMMITS_BASE = ENV["LOLCOMMITS_DIR"] || File.join(Dir.home, ".lolcommits")
4
+ LOLCOMMITS_ROOT = File.join(File.dirname(__FILE__), "../..")
7
5
 
8
6
  attr_accessor :plugin_manager
9
7
  attr_writer :loldir
10
8
 
9
+ def self.loldir_for(basename)
10
+ loldir = File.join(LOLCOMMITS_BASE, basename)
11
+
12
+ if File.directory? loldir
13
+ begin
14
+ # ensure 755 permissions for loldir
15
+ File.chmod(0o755, loldir)
16
+ rescue Errno::EPERM
17
+ # abort if permissions cannot be met
18
+ puts "FATAL: directory '#{loldir}' should be present and writeable by user '#{ENV.fetch('USER', nil)}'"
19
+ puts "Try changing the directory permissions to 755"
20
+ exit 1
21
+ end
22
+ else
23
+ FileUtils.mkdir_p loldir
24
+ end
25
+ loldir
26
+ end
27
+
11
28
  def initialize(plugin_manager, test_mode: false)
12
29
  @plugin_manager = plugin_manager
13
- @loldir = Configuration.loldir_for('test') if test_mode
30
+ @loldir = Configuration.loldir_for("test") if test_mode
14
31
  end
15
32
 
16
33
  def yaml
17
34
  @yaml ||= if File.exist?(configuration_file)
18
- YAML.safe_load(File.open(configuration_file), permitted_classes: [Symbol]) || Hash.new({})
19
- else
35
+ YAML.safe_load(File.open(configuration_file), permitted_classes: [ Symbol ]) || Hash.new({})
36
+ else
20
37
  Hash.new({})
21
- end
38
+ end
22
39
  end
23
40
 
24
41
  def configuration_file
@@ -30,11 +47,11 @@ module Lolcommits
30
47
 
31
48
  basename ||= if VCSInfo.repo_root?
32
49
  VCSInfo.local_name
33
- else
50
+ else
34
51
  File.basename(Dir.getwd)
35
- end
36
- basename.sub!(/^\./, 'dot')
37
- basename.sub!(/ /, '-')
52
+ end
53
+ basename.sub!(/^\./, "dot")
54
+ basename.sub!(/ /, "-")
38
55
  @loldir = Configuration.loldir_for(basename)
39
56
  end
40
57
 
@@ -42,7 +59,7 @@ module Lolcommits
42
59
  File.join loldir, "#{sha}.#{ext}"
43
60
  end
44
61
 
45
- def capture_path(ext = 'jpg')
62
+ def capture_path(ext = "jpg")
46
63
  File.join loldir, "raw_capture.#{ext}"
47
64
  end
48
65
 
@@ -68,7 +85,7 @@ module Lolcommits
68
85
 
69
86
  def ask_for_plugin_name
70
87
  list_plugins
71
- print 'Name of plugin to configure: '
88
+ print "Name of plugin to configure: "
72
89
  gets.strip
73
90
  end
74
91
 
@@ -94,7 +111,7 @@ module Lolcommits
94
111
  ensure
95
112
  if plugin
96
113
  # clean away legacy enabled key, later we can remove this
97
- plugin_config.delete('enabled')
114
+ plugin_config.delete("enabled")
98
115
  # save plugin config (if we have anything in the hash)
99
116
  save(plugin.name, plugin_config) unless plugin_config.empty?
100
117
 
@@ -114,26 +131,5 @@ module Lolcommits
114
131
  def to_s
115
132
  yaml.to_yaml.to_s
116
133
  end
117
-
118
- # class methods
119
-
120
- def self.loldir_for(basename)
121
- loldir = File.join(LOLCOMMITS_BASE, basename)
122
-
123
- if File.directory? loldir
124
- begin
125
- # ensure 755 permissions for loldir
126
- File.chmod(0o755, loldir)
127
- rescue Errno::EPERM
128
- # abort if permissions cannot be met
129
- puts "FATAL: directory '#{loldir}' should be present and writeable by user '#{ENV.fetch('USER', nil)}'"
130
- puts 'Try changing the directory permissions to 755'
131
- exit 1
132
- end
133
- else
134
- FileUtils.mkdir_p loldir
135
- end
136
- loldir
137
- end
138
134
  end
139
135
  end
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  module Lolcommits
4
2
  class GemPlugin
5
3
  attr_accessor :gem_spec, :required
@@ -51,22 +49,22 @@ module Lolcommits
51
49
  end
52
50
 
53
51
  def name
54
- gem_name.split('-', 2).last
52
+ gem_name.split("-", 2).last
55
53
  end
56
54
 
57
55
  private
58
56
 
59
57
  def gem_path
60
- gem_name.tr('-', '/')
58
+ gem_name.tr("-", "/")
61
59
  end
62
60
 
63
61
  def plugin_klass_name
64
62
  # convert gem paths to plugin classes e.g.
65
63
  # lolcommits/loltext --> Lolcommits::Plugin::Loltext
66
64
  # lolcommits/term_output --> Lolcommits::Plugin::TermOutput
67
- gem_path.split('/').insert(1, 'plugin').collect do |c|
68
- c.split('_').collect(&:capitalize).join
69
- end.join('::')
65
+ gem_path.split("/").insert(1, "plugin").collect do |c|
66
+ c.split("_").collect(&:capitalize).join
67
+ end.join("::")
70
68
  end
71
69
  end
72
70
  end
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  module Lolcommits
4
2
  #
5
3
  # Methods to handle enabling and disabling of lolcommits
@@ -23,9 +21,9 @@ module Lolcommits
23
21
  capture_args = extract_capture_args(options)
24
22
  path = backend.do_enable(capture_args)
25
23
 
26
- info 'installed lolcommit hook to:'
24
+ info "installed lolcommit hook to:"
27
25
  info " -> #{File.expand_path(path)}"
28
- info '(to remove later, you can use: lolcommits --disable)'
26
+ info "(to remove later, you can use: lolcommits --disable)"
29
27
  # we dont symlink, but rather install a small stub that calls the one from path
30
28
  # that way, as gem version changes, script updates even if new file thus breaking symlink
31
29
  end
@@ -43,14 +41,14 @@ module Lolcommits
43
41
  # @return [String]
44
42
  def self.extract_capture_args(options)
45
43
  options.map do |k, v|
46
- next unless %w(device animate delay stealth fork).include?(k)
44
+ next unless %w[device animate delay stealth fork].include?(k)
47
45
 
48
- if k == 'device'
46
+ if k == "device"
49
47
  "--device '#{v}'"
50
48
  else
51
49
  "--#{k}#{v == true ? '' : " #{v}"}"
52
50
  end
53
- end.compact.join(' ')
51
+ end.compact.join(" ")
54
52
  end
55
53
  end
56
54
  end
@@ -1,15 +1,13 @@
1
- # frozen_string_literal: true
2
-
3
- require 'mini_magick'
4
- require 'rbconfig'
1
+ require "mini_magick"
2
+ require "rbconfig"
5
3
 
6
4
  module Lolcommits
7
5
  class Platform
8
6
  # The capturer class constant to use
9
7
  # @return Class
10
8
  def self.capturer_class(animate: false)
11
- if ENV['LOLCOMMITS_CAPTURER']
12
- const_get(ENV['LOLCOMMITS_CAPTURER'])
9
+ if ENV["LOLCOMMITS_CAPTURER"]
10
+ const_get(ENV["LOLCOMMITS_CAPTURER"])
13
11
  elsif platform_mac?
14
12
  animate ? CaptureMacVideo : CaptureMac
15
13
  elsif platform_linux?
@@ -19,20 +17,20 @@ module Lolcommits
19
17
  elsif platform_cygwin?
20
18
  CaptureCygwin
21
19
  else
22
- raise 'Unknown / Unsupported Platform.'
20
+ raise "Unknown / Unsupported Platform."
23
21
  end
24
22
  end
25
23
 
26
24
  # Are we on a Mac platform?
27
25
  # @return Boolean
28
26
  def self.platform_mac?
29
- host_os.include?('darwin')
27
+ host_os.include?("darwin")
30
28
  end
31
29
 
32
30
  # Are we on a Linux platform?
33
31
  # @return Boolean
34
32
  def self.platform_linux?
35
- host_os.include?('linux')
33
+ host_os.include?("linux")
36
34
  end
37
35
 
38
36
  # Are we on a Windows platform?
@@ -44,13 +42,13 @@ module Lolcommits
44
42
  # Are we on a Cygwin platform?
45
43
  # @return Boolean
46
44
  def self.platform_cygwin?
47
- host_os.include?('cygwin')
45
+ host_os.include?("cygwin")
48
46
  end
49
47
 
50
48
  # return host_os identifier from the RbConfig::CONFIG constant
51
49
  # @return String
52
50
  def self.host_os
53
- ENV['LOLCOMMITS_FAKE_HOST_OS'] || RbConfig::CONFIG['host_os'].downcase
51
+ ENV["LOLCOMMITS_FAKE_HOST_OS"] || RbConfig::CONFIG["host_os"].downcase
54
52
  end
55
53
 
56
54
  # Is the platform capable of capturing animated GIFs from webcam?
@@ -62,9 +60,7 @@ module Lolcommits
62
60
  # Is a valid install of imagemagick present on the system?
63
61
  # @return Boolean
64
62
  def self.valid_imagemagick_installed?
65
- return false unless command_which('identify')
66
-
67
- return false unless command_which('mogrify')
63
+ return false unless command_which("magick")
68
64
 
69
65
  # cli_version check will throw a MiniMagick::Error exception if IM is not
70
66
  # installed in PATH, since it attempts to parse output from `identify`
@@ -78,7 +74,7 @@ module Lolcommits
78
74
  # @note For now, this just checks for presence, any version should work.
79
75
  # @return Boolean
80
76
  def self.valid_ffmpeg_installed?
81
- command_which('ffmpeg')
77
+ command_which("ffmpeg")
82
78
  end
83
79
 
84
80
  # Cross-platform way of finding an executable in the $PATH.
@@ -91,8 +87,8 @@ module Lolcommits
91
87
  #
92
88
  # @return Boolean
93
89
  def self.command_which(cmd, only_path: false)
94
- exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
95
- ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
90
+ exts = ENV["PATHEXT"] ? ENV["PATHEXT"].split(";") : [ "" ]
91
+ ENV["PATH"].split(File::PATH_SEPARATOR).each do |path|
96
92
  exts.each do |ext|
97
93
  exe = "#{path}/#{cmd}#{ext}"
98
94
  return only_path ? path : exe if File.executable? exe
@@ -123,7 +119,7 @@ module Lolcommits
123
119
  # TODO: handle other platforms here (linux/windows) e.g with ffmpeg -list_devices
124
120
  return unless Platform.platform_mac?
125
121
 
126
- videosnap = File.join(Configuration::LOLCOMMITS_ROOT, 'vendor', 'ext', 'videosnap', 'videosnap')
122
+ videosnap = File.join(Configuration::LOLCOMMITS_ROOT, "vendor", "ext", "videosnap", "videosnap")
127
123
  `#{videosnap} -l`
128
124
  end
129
125
  end
@@ -1,6 +1,4 @@
1
- # frozen_string_literal: true
2
-
3
- require 'lolcommits/plugin/configuration_helper'
1
+ require "lolcommits/plugin/configuration_helper"
4
2
 
5
3
  module Lolcommits
6
4
  module Plugin
@@ -13,7 +11,7 @@ module Lolcommits
13
11
  self.runner = runner
14
12
  self.name = name || self.class.to_s
15
13
  self.configuration = config || {}
16
- self.options = [:enabled]
14
+ self.options = [ :enabled ]
17
15
  end
18
16
 
19
17
  def run_pre_capture; end
@@ -51,9 +49,7 @@ module Lolcommits
51
49
  #
52
50
  # @return [Hash] the configured plugin options
53
51
  def configure_options!
54
- configure_option_hash(
55
- options.map { |option| [option, nil] }.to_h.merge(default_options)
56
- )
52
+ configure_option_hash(options.map { |option| [ option, nil ] }.to_h.merge(default_options))
57
53
  end
58
54
 
59
55
  def default_options
@@ -103,7 +99,7 @@ module Lolcommits
103
99
  def configure_option_hash(option_hash, spacing_count = 0)
104
100
  option_hash.keys.reduce({}) do |acc, option|
105
101
  option_value = option_hash[option]
106
- prefix = ' ' * spacing_count
102
+ prefix = " " * spacing_count
107
103
  if option_value.is_a?(Hash)
108
104
  puts "#{prefix}#{option}:\n"
109
105
  acc.merge(option => configure_option_hash(option_value, (spacing_count + 1)))
@@ -1,13 +1,11 @@
1
- # frozen_string_literal: true
2
-
3
1
  module Lolcommits
4
2
  module Plugin
5
3
  module ConfigurationHelper
6
4
  # handle for bools, strings, ints and blanks from user input
7
5
  def parse_user_input(str)
8
- if 'true'.casecmp(str).zero?
6
+ if "true".casecmp(str).zero?
9
7
  true
10
- elsif 'false'.casecmp(str).zero?
8
+ elsif "false".casecmp(str).zero?
11
9
  false
12
10
  elsif str =~ /^[0-9]+$/
13
11
  str.to_i
@@ -29,7 +27,7 @@ module Lolcommits
29
27
  # ]
30
28
  # User will be asked for Organization, can tab to autocomplete, and chosen
31
29
  # value is returned.
32
- def prompt_autocomplete_hash(prompt, items, name: 'name', value: 'value', suggest_words: 5)
30
+ def prompt_autocomplete_hash(prompt, items, name: "name", value: "value", suggest_words: 5)
33
31
  words = items.map { |item| item[name] }.sort
34
32
  puts "e.g. #{words.take(suggest_words).join(', ')}" if suggest_words.positive?
35
33
  completed_input = gets_autocomplete(prompt, words)
@@ -40,7 +38,7 @@ module Lolcommits
40
38
 
41
39
  def gets_autocomplete(prompt, words)
42
40
  completion_handler = proc { |s| words.grep(/^#{Regexp.escape(s)}/) }
43
- Readline.completion_append_character = ''
41
+ Readline.completion_append_character = ""
44
42
  Readline.completion_proc = completion_handler
45
43
 
46
44
  while (line = Readline.readline(prompt, true).strip)
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  module Lolcommits
4
2
  class PluginManager
5
3
  GEM_NAME_PREFIX = /^#{Lolcommits::GEM_NAME}-/
@@ -62,7 +60,7 @@ module Lolcommits
62
60
 
63
61
  def gem_list
64
62
  Gem.refresh
65
- Gem::Specification.respond_to?(:each) ? Gem::Specification : Gem.source_index.find_name('')
63
+ Gem::Specification.respond_to?(:each) ? Gem::Specification : Gem.source_index.find_name("")
66
64
  end
67
65
  end
68
66
  end
@@ -1,7 +1,5 @@
1
- # frozen_string_literal: true
2
-
3
- require 'lolcommits/platform'
4
- require 'lolcommits/animated_gif'
1
+ require "lolcommits/platform"
2
+ require "lolcommits/animated_gif"
5
3
 
6
4
  module Lolcommits
7
5
  class Runner
@@ -30,7 +28,7 @@ module Lolcommits
30
28
 
31
29
  self.capture_path = config.capture_path(lolcommit_ext)
32
30
  self.lolcommit_path = config.sha_path(sha, lolcommit_ext)
33
- self.lolcommit_gif_path = config.sha_path(sha, 'gif') if capture_gif
31
+ self.lolcommit_gif_path = config.sha_path(sha, "gif") if capture_gif
34
32
  end
35
33
 
36
34
  def run
@@ -41,7 +39,7 @@ module Lolcommits
41
39
 
42
40
  # capture must exist to run post capture methods
43
41
  unless File.exist?(capture_path)
44
- raise 'failed to capture any image or video!'
42
+ raise "failed to capture any image or video!"
45
43
  end
46
44
 
47
45
  run_post_capture
@@ -50,7 +48,7 @@ module Lolcommits
50
48
  debug("#{e.class}: #{e.message}")
51
49
  exit 1
52
50
  ensure
53
- debug 'running cleanup'
51
+ debug "running cleanup"
54
52
  FileUtils.rm_f(capture_path)
55
53
  end
56
54
 
@@ -63,12 +61,12 @@ module Lolcommits
63
61
  end
64
62
 
65
63
  base = MiniMagick::Image.open(source_path)
66
- png_tempfile = MiniMagick::Utilities.tempfile('.png')
64
+ png_tempfile = MiniMagick::Utilities.tempfile(".png")
67
65
  debug("creating a new empty overlay png for lolcommit (#{base.dimensions.join('x')})")
68
66
 
69
67
  MiniMagick::Tool::Convert.new do |i|
70
68
  i.size "#{base.width}x#{base.height}"
71
- i.xc 'transparent'
69
+ i.xc "transparent"
72
70
  i << png_tempfile.path
73
71
  end
74
72
 
@@ -94,7 +92,7 @@ module Lolcommits
94
92
  end
95
93
 
96
94
  def run_capture
97
- puts '*** Preserving this moment in history.' unless capture_stealth
95
+ puts "*** Preserving this moment in history." unless capture_stealth
98
96
  capturer = Platform.capturer_class(animate: !capture_image?).new(
99
97
  capture_path: capture_path,
100
98
  capture_device: capture_device,
@@ -119,10 +117,7 @@ module Lolcommits
119
117
  # optionally create animated gif
120
118
  return unless capture_gif
121
119
 
122
- AnimatedGif.new.create(
123
- video_path: lolcommit_path,
124
- output_path: lolcommit_gif_path
125
- )
120
+ AnimatedGif.new.create(video_path: lolcommit_path, output_path: lolcommit_gif_path)
126
121
 
127
122
  # done if we are capturing both video and gif
128
123
  return if capture_video
@@ -145,9 +140,9 @@ module Lolcommits
145
140
  debug "resizing raw image (#{image.dimensions.join('x')}) to #{lolcommit_path} (640x480)"
146
141
  # hacky resize to fill bounds
147
142
  image.combine_options do |c|
148
- c.resize '640x480^'
149
- c.gravity 'center'
150
- c.extent '640x480'
143
+ c.resize "640x480^"
144
+ c.gravity "center"
145
+ c.extent "640x480"
151
146
  end
152
147
  image.write(lolcommit_path)
153
148
  else
@@ -157,10 +152,10 @@ module Lolcommits
157
152
  end
158
153
 
159
154
  def apply_overlay
160
- debug 'applying overlay to lolcommit'
155
+ debug "applying overlay to lolcommit"
161
156
  if capture_image?
162
157
  MiniMagick::Image.open(lolcommit_path).composite(overlay) do |c|
163
- c.gravity 'center'
158
+ c.gravity "center"
164
159
  end.write(lolcommit_path)
165
160
  else
166
161
  system_call "ffmpeg -v quiet -nostats -i #{capture_path} -i #{overlay.path} \
@@ -171,9 +166,9 @@ module Lolcommits
171
166
 
172
167
  def lolcommit_ext
173
168
  if capture_image?
174
- 'jpg'
169
+ "jpg"
175
170
  else
176
- 'mp4'
171
+ "mp4"
177
172
  end
178
173
  end
179
174
 
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  module Lolcommits
4
2
  module TestHelpers
5
3
  module FakeIO