lolcommits 0.5.8 → 0.5.9.pre1
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.
- checksums.yaml +8 -8
- data/.travis.yml +0 -1
- data/bin/lolcommits +29 -25
- data/config/cucumber.yml +1 -1
- data/features/lolcommits.feature +10 -4
- data/features/step_definitions/lolcommits_steps.rb +2 -2
- data/features/support/env.rb +4 -1
- data/lib/lolcommits/installation.rb +9 -3
- data/lib/lolcommits/platform.rb +23 -30
- data/lib/lolcommits/runner.rb +6 -6
- data/lib/lolcommits/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NDI1ODQ5NGJmYzNmZmY3NDFkYmQ4ZGVjYWI4MmZhNzMyZGM4ZjdiNQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
Njg3MjU3ZTYxZDdmNWE1ZTEyNTQ4ZTI1NDUzNWU0OWZjYjc1M2M1OA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
M2JiZDE3NWQ1M2RjODAxZjNiM2RhYjNhYmNmOGYwMDVhMzdiMjZkNjg0ZTg3
|
10
|
+
OTk5YWFhNmQ4NzdjMWViNzY4MzFjOGYwZWM0OTU5MDQ1MzdhMTgzNTcyNDI4
|
11
|
+
ZWJmMzgwZDE4NjVlMWJiZDY4ZDgyMWU1YzUxYzAxYWJiZDJmNmQ=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NzhmYTFkN2JmMTQwNDQ0ZTM0ZmQ5MGUyNzFlMmNlMGUzNTkzMGJhNDI0YzQ2
|
14
|
+
MzljZjZlZGE5MWFjYzIzMTE0ODhkMDdkMGI1YmE3YjBjNDY5M2I4YjQzNGQz
|
15
|
+
ZjJhNDM2NTIxY2NlZGJkOWM5YWY4MmM0ZjVlODkyYWViMTNjMGU=
|
data/.travis.yml
CHANGED
@@ -26,7 +26,6 @@ branches:
|
|
26
26
|
- gh-pages
|
27
27
|
|
28
28
|
notifications:
|
29
|
-
irc: chat.freenode.net#lolcommits
|
30
29
|
slack:
|
31
30
|
secure: BkGsQOYMJqW55j94S1QwmR17BkwuTIULKVhwzRdnv37BvVcC17y9KLMo8NH+bcao36XZx9DukXcTyaDQc6tCSlFEbG/FcPUJM8bx9EWjHUoGVg1KdpVu/nVHu+GKosrB41lM3nfJWCnF0TOSnmTXU+bV8Pwkij+L5X+gNyAT2Ns=
|
32
31
|
|
data/bin/lolcommits
CHANGED
@@ -163,15 +163,21 @@ Choice.options do
|
|
163
163
|
option :enable do
|
164
164
|
long '--enable'
|
165
165
|
short '-e'
|
166
|
-
action { Installation.do_enable }
|
167
166
|
desc 'install lolcommits for this repo'
|
167
|
+
action do
|
168
|
+
Installation.do_enable
|
169
|
+
exit 0
|
170
|
+
end
|
168
171
|
end
|
169
172
|
|
170
173
|
option :disable do
|
171
174
|
long '--disable'
|
172
175
|
short '-d'
|
173
|
-
action { Installation.do_disable }
|
174
176
|
desc 'uninstall lolcommits for this repo'
|
177
|
+
action do
|
178
|
+
Installation.do_disable
|
179
|
+
exit 0
|
180
|
+
end
|
175
181
|
end
|
176
182
|
|
177
183
|
option :capture do
|
@@ -314,27 +320,25 @@ load_local_plugins!
|
|
314
320
|
#
|
315
321
|
# Handle actions manually since choice seems weird
|
316
322
|
#
|
317
|
-
if
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
do_noargs
|
339
|
-
end
|
323
|
+
if Choice.choices[:capture]
|
324
|
+
do_capture
|
325
|
+
elsif Choice.choices[:configure]
|
326
|
+
do_configure
|
327
|
+
elsif Choice.choices[:show_config]
|
328
|
+
puts configuration
|
329
|
+
elsif Choice.choices[:plugins]
|
330
|
+
configuration.puts_plugins
|
331
|
+
elsif Choice.choices[:devices]
|
332
|
+
puts Platform.device_list
|
333
|
+
puts "Specify a device with --device=\"{device name}\" "\
|
334
|
+
'or set the LOLCOMMITS_DEVICE env variable'
|
335
|
+
elsif Choice.choices[:last]
|
336
|
+
do_last
|
337
|
+
elsif Choice.choices[:browse]
|
338
|
+
Fatals.die_if_not_git_repo!
|
339
|
+
Launcher.open_folder(configuration.loldir)
|
340
|
+
elsif Choice.choices[:gif]
|
341
|
+
TimelapseGif.new(configuration).run(Choice.choices[:gif])
|
342
|
+
else
|
343
|
+
do_noargs
|
340
344
|
end
|
data/config/cucumber.yml
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
---
|
2
|
-
default: <%= (
|
2
|
+
default: <%= (RbConfig::CONFIG['host_os'] =~ /darwin/) ? 'features' : '--tags ~@mac-only' %>
|
data/features/lolcommits.feature
CHANGED
@@ -9,14 +9,14 @@ Feature: Basic UI functionality
|
|
9
9
|
And the banner should be present
|
10
10
|
|
11
11
|
Scenario: Help should show the animate option on a Mac platform
|
12
|
-
Given I am using a "
|
12
|
+
Given I am using a "darwin" platform
|
13
13
|
When I get help for "lolcommits"
|
14
14
|
Then the following options should be documented:
|
15
15
|
| --animate | which is optional |
|
16
16
|
| -a | which is optional |
|
17
17
|
|
18
18
|
Scenario: Help should not show the animate option on a Windows plaftorm
|
19
|
-
Given I am using a "
|
19
|
+
Given I am using a "win32" platform
|
20
20
|
When I get help for "lolcommits"
|
21
21
|
Then the output should not match /\-a\, \-\-animate\=SECONDS/
|
22
22
|
|
@@ -242,7 +242,6 @@ Feature: Basic UI functionality
|
|
242
242
|
Scenario: should generate an animated gif on the Mac platform
|
243
243
|
Given I am in a git repo named "animate"
|
244
244
|
And I do a git commit
|
245
|
-
And I am using a "Mac" platform
|
246
245
|
When I run `lolcommits --capture --animate=1`
|
247
246
|
Then the output should contain "*** Preserving this moment in history."
|
248
247
|
And a directory named "~/.lolcommits/animate" should exist
|
@@ -252,10 +251,17 @@ Feature: Basic UI functionality
|
|
252
251
|
|
253
252
|
@fake-no-ffmpeg
|
254
253
|
Scenario: gracefully fail when ffmpeg not installed and --animate is used
|
255
|
-
Given I am using a "
|
254
|
+
Given I am using a "darwin" platform
|
256
255
|
When I run `lolcommits --animate=3`
|
257
256
|
Then the output should contain:
|
258
257
|
"""
|
259
258
|
ffmpeg does not appear to be properly installed
|
260
259
|
"""
|
261
260
|
And the exit status should be 1
|
261
|
+
|
262
|
+
Scenario: Enable on windows platform setting PATH in post-commit hook
|
263
|
+
Given I am using a "win32" platform
|
264
|
+
And I am in a git repo
|
265
|
+
When I successfully run `lolcommits --enable`
|
266
|
+
Then the post-commit hook should contain "set path"
|
267
|
+
And the exit status should be 0
|
@@ -132,8 +132,8 @@ Then(/^there should be (\d+) commit entries in the git log$/) do |n|
|
|
132
132
|
expect(n.to_i).to eq `git shortlog | grep -E '^[ ]+\w+' | wc -l`.chomp.to_i
|
133
133
|
end
|
134
134
|
|
135
|
-
Given(/^I am using a "(.*?)" platform$/) do |
|
136
|
-
set_env '
|
135
|
+
Given(/^I am using a "(.*?)" platform$/) do |host_os_name|
|
136
|
+
set_env 'LOLCOMMITS_FAKE_HOST_OS', host_os_name
|
137
137
|
end
|
138
138
|
|
139
139
|
When(/^I wait for the child process to exit in "(.*?)"$/) do |repo_name|
|
data/features/support/env.rb
CHANGED
@@ -15,11 +15,13 @@ Before do
|
|
15
15
|
@puts = true
|
16
16
|
@aruba_timeout_seconds = 20
|
17
17
|
|
18
|
-
|
18
|
+
# prevent launchy from opening gifs in tests
|
19
19
|
set_env 'LAUNCHY_DRY_RUN', 'true'
|
20
|
+
set_env 'LOLCOMMITS_CAPTURER', 'CaptureFake'
|
20
21
|
|
21
22
|
author_name = 'Testy McTesterson'
|
22
23
|
author_email = 'testy@tester.com'
|
24
|
+
|
23
25
|
set_env 'GIT_AUTHOR_NAME', author_name
|
24
26
|
set_env 'GIT_COMMITTER_NAME', author_name
|
25
27
|
set_env 'GIT_AUTHOR_EMAIL', author_email
|
@@ -53,6 +55,7 @@ end
|
|
53
55
|
Before('@in-tempdir') do
|
54
56
|
@dirs = [Dir.mktmpdir]
|
55
57
|
end
|
58
|
+
|
56
59
|
After('@in-tempdir') do
|
57
60
|
FileUtils.rm_rf(@dirs.first)
|
58
61
|
end
|
@@ -68,11 +68,17 @@ module Lolcommits
|
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
|
-
def self.hook_script
|
71
|
+
def self.hook_script
|
72
72
|
ruby_path = Lolcommits::Platform.command_which('ruby', true)
|
73
73
|
imagick_path = Lolcommits::Platform.command_which('identify', true)
|
74
|
-
|
75
|
-
|
74
|
+
|
75
|
+
if Lolcommits::Platform.platform_windows?
|
76
|
+
hook_export = "set path \"#{ruby_path};#{imagick_path};%PATH%\"\n"
|
77
|
+
else
|
78
|
+
locale_export = "export LANG=\"#{ENV['LANG']}\"\n"
|
79
|
+
hook_export = "export PATH=\"#{ruby_path}:#{imagick_path}:$PATH\"\n"
|
80
|
+
end
|
81
|
+
|
76
82
|
capture_cmd = 'lolcommits --capture'
|
77
83
|
capture_args = " #{ARGV[1..-1].join(' ')}" if ARGV.length > 1
|
78
84
|
|
data/lib/lolcommits/platform.rb
CHANGED
@@ -1,17 +1,22 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
2
|
require 'mini_magick'
|
3
|
+
require 'rbconfig'
|
3
4
|
|
4
5
|
module Lolcommits
|
5
6
|
class Platform
|
6
|
-
#
|
7
|
-
# @return
|
8
|
-
def self.
|
9
|
-
if
|
10
|
-
|
11
|
-
elsif platform_mac?
|
12
|
-
|
13
|
-
elsif
|
14
|
-
|
7
|
+
# The capturer class constant to use
|
8
|
+
# @return Class
|
9
|
+
def self.capturer_class(animate = false)
|
10
|
+
if ENV['LOLCOMMITS_CAPTURER']
|
11
|
+
const_get(ENV['LOLCOMMITS_CAPTURER'])
|
12
|
+
elsif platform_mac?
|
13
|
+
animate ? CaptureMacAnimated : CaptureMac
|
14
|
+
elsif platform_linux?
|
15
|
+
animate ? CaptureLinuxAnimated : CaptureLinux
|
16
|
+
elsif platform_windows?
|
17
|
+
CaptureWindows
|
18
|
+
elsif platform_cygwin?
|
19
|
+
CaptureCygwin
|
15
20
|
else
|
16
21
|
fail 'Unknown / Unsupported Platform.'
|
17
22
|
end
|
@@ -20,49 +25,37 @@ module Lolcommits
|
|
20
25
|
# Are we on a Mac platform?
|
21
26
|
# @return Boolean
|
22
27
|
def self.platform_mac?
|
23
|
-
|
28
|
+
host_os.include?('darwin')
|
24
29
|
end
|
25
30
|
|
26
31
|
# Are we on a Linux platform?
|
27
32
|
# @return Boolean
|
28
33
|
def self.platform_linux?
|
29
|
-
|
34
|
+
host_os.include?('linux')
|
30
35
|
end
|
31
36
|
|
32
37
|
# Are we on a Windows platform?
|
33
38
|
# @return Boolean
|
34
39
|
def self.platform_windows?
|
35
|
-
!
|
40
|
+
!host_os.match(/(win|w)32/).nil?
|
36
41
|
end
|
37
42
|
|
38
43
|
# Are we on a Cygwin platform?
|
39
44
|
# @return Boolean
|
40
45
|
def self.platform_cygwin?
|
41
|
-
|
42
|
-
end
|
43
|
-
|
44
|
-
# Are we currently faking webcam capture for test purposes?
|
45
|
-
# @return Boolean
|
46
|
-
def self.platform_fakecapture?
|
47
|
-
(ENV['LOLCOMMITS_FAKECAPTURE'] == '1' || false)
|
46
|
+
host_os.include?('cygwin')
|
48
47
|
end
|
49
48
|
|
50
|
-
#
|
51
|
-
# @
|
52
|
-
|
53
|
-
|
54
|
-
ENV['LOLCOMMITS_FAKEPLATFORM']
|
49
|
+
# return host_os identifier from the RbConfig::CONFIG constant
|
50
|
+
# @return String
|
51
|
+
def self.host_os
|
52
|
+
ENV['LOLCOMMITS_FAKE_HOST_OS'] || RbConfig::CONFIG['host_os'].downcase
|
55
53
|
end
|
56
54
|
|
57
55
|
# Is the platform capable of capturing animated GIFs from webcam?
|
58
56
|
# @return Boolean
|
59
57
|
def self.can_animate?
|
60
|
-
|
61
|
-
# simply returning platform_mac? || platform_linux?
|
62
|
-
# This is not ideal... but otherwise overriding platform via
|
63
|
-
# LOLCOMMITS_FAKEPLATFORM when running cucumber tests won't work.
|
64
|
-
# We should come up with a better solution.
|
65
|
-
%w(Mac Linux).include? platform
|
58
|
+
platform_linux? || platform_mac?
|
66
59
|
end
|
67
60
|
|
68
61
|
# Is a valid install of imagemagick present on the system?
|
data/lib/lolcommits/runner.rb
CHANGED
@@ -80,7 +80,8 @@ module Lolcommits
|
|
80
80
|
puts '*** Preserving this moment in history.' unless capture_stealth
|
81
81
|
self.snapshot_loc = config.raw_image(image_file_type)
|
82
82
|
self.main_image = config.main_image(sha, image_file_type)
|
83
|
-
|
83
|
+
|
84
|
+
capturer = Platform.capturer_class(animate?).new(
|
84
85
|
:capture_device => capture_device,
|
85
86
|
:capture_delay => capture_delay,
|
86
87
|
:snapshot_location => snapshot_loc,
|
@@ -98,11 +99,10 @@ module Lolcommits
|
|
98
99
|
|
99
100
|
private
|
100
101
|
|
101
|
-
def capturer_class
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
end
|
102
|
+
# def capturer_class
|
103
|
+
# capturer_module = 'Lolcommits'
|
104
|
+
# Object.const_get(capturer_module).const_get(Platform.capturer_class(animate?))
|
105
|
+
# end
|
106
106
|
|
107
107
|
def image_file_type
|
108
108
|
animate? ? 'gif' : 'jpg'
|
data/lib/lolcommits/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lolcommits
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.9.pre1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew Rothenberg
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-04-
|
12
|
+
date: 2015-04-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rest-client
|
@@ -435,9 +435,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
435
435
|
version: 1.8.7
|
436
436
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
437
437
|
requirements:
|
438
|
-
- - ! '
|
438
|
+
- - ! '>'
|
439
439
|
- !ruby/object:Gem::Version
|
440
|
-
version:
|
440
|
+
version: 1.3.1
|
441
441
|
requirements:
|
442
442
|
- imagemagick
|
443
443
|
- a webcam
|