lolcommits 0.17.2 → 0.17.3

Sign up to get free protection for your applications and to get access to all the features.
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