lolcommits 0.5.1 → 0.5.2.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 +15 -0
- data/.coveralls.yml +1 -0
- data/.gitignore +1 -0
- data/CHANGELOG +13 -0
- data/README.md +29 -16
- data/bin/lolcommits +68 -15
- data/features/lolcommits.feature +40 -6
- data/features/plugins.feature +4 -4
- data/features/step_definitions/lolcommits_steps.rb +6 -0
- data/lib/lolcommits/configuration.rb +41 -35
- data/lib/lolcommits/plugin.rb +62 -19
- data/lib/lolcommits/plugins/dot_com.rb +14 -4
- data/lib/lolcommits/plugins/lol_twitter.rb +87 -65
- data/lib/lolcommits/plugins/lolsrv.rb +31 -32
- data/lib/lolcommits/plugins/loltext.rb +13 -34
- data/lib/lolcommits/plugins/tranzlate.rb +104 -9
- data/lib/lolcommits/plugins/uploldz.rb +13 -9
- data/lib/lolcommits/version.rb +1 -1
- data/lolcommits.gemspec +2 -1
- data/test/test_lolcommits.rb +39 -21
- metadata +25 -67
- data/lib/tranzlate/lolspeak.rb +0 -101
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
YjQ4MGRhYzg2Zjg0YTEwOTgxN2UyZTIzMGU1YzBkYzk1ZDk1NWJlOQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZDRjYTY4MjAzNjdlNjUxM2ViZmY0Y2Q4MDQwODczMDMzNzQ0ODA1Nw==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
OWFlYjVhYzM2MTU1OGM1NGJmMTY2MDc3MWQ3MzkzZDM1MmZhMThlNjI1MDky
|
10
|
+
NmJiOTI2NDI3NjYxN2IyMTA2ZTkwZWJlY2IzZTNjNmIyMWZhZTA3ZGMyODYy
|
11
|
+
YzFiN2EzZGQ1MDc0OTQ3MzM3N2JlM2U5MjE1YTI1YmIyZGVkNTY=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
OWVkMjAzYjI4ZTdhZGZjZmQ3NzFmOWRjYzdiZWEwMDAzNzg4N2EzZTEzNWUy
|
14
|
+
ZGVhYmIzYzIwZGY1YzU5ZjM1NDZiOTJjNzk3OGQ5NGE4NDg2ZWYxZWU2ZjY0
|
15
|
+
Njk0ODdiMDRlZTJkZTAxMmMzMDQxNjI0NWVlMjA2ZWUxNjkzMGI=
|
data/.coveralls.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
service_name: travis-ci
|
data/.gitignore
CHANGED
data/CHANGELOG
CHANGED
@@ -1,6 +1,19 @@
|
|
1
1
|
0.x.x (in development)
|
2
2
|
* TODO: figure out problems with GUI clients
|
3
3
|
|
4
|
+
0.5.2 (4 December 2013)
|
5
|
+
* Allow lolsrv plugin to sync/upload gifs (@matthutchinson #180)
|
6
|
+
* Plugins refactor, can now configure themselves (@matthutchinson #179)
|
7
|
+
- also closes issue #136 and issue #73
|
8
|
+
* Fix for Twitter gem dependency issue (@matthutchinson #178)
|
9
|
+
* Added coveralls support (@Aaron1011 #177)
|
10
|
+
- gitignore updated, coveralls badge added to README
|
11
|
+
* Refactor tranzlate plugin, lolspeak now in plugin (@matthutchinson #176)
|
12
|
+
* Fix for 'Cannot satisfy json dependancy' (@matthutchinson #175)
|
13
|
+
* Better post commit hook enabling/disabling (@matthutchinson #173)
|
14
|
+
* Improved --enable option, accepts passing arguments (@matthutchinson #154)
|
15
|
+
- README updated to explain enabling with options
|
16
|
+
|
4
17
|
0.5.1 (13 November 2013)
|
5
18
|
* Fix JSON gem issue #163 (@matthutchinson, #171)
|
6
19
|
* Enable image capture under Cygwin (@cwc, #105)
|
data/README.md
CHANGED
@@ -8,6 +8,7 @@ By default, the lolimages are stored by a Github style short SHA in a `~/.lolcom
|
|
8
8
|
[](http://badge.fury.io/rb/lolcommits)
|
9
9
|
[](http://travis-ci.org/mroth/lolcommits)
|
10
10
|
[](https://gemnasium.com/mroth/lolcommits)
|
11
|
+
[](https://coveralls.io/r/mroth/lolcommits)
|
11
12
|
|
12
13
|
## Sample images
|
13
14
|
<img src="http://blog.mroth.info/images/postcontent/yearinsideprojects/lolcommits_users2.jpg" />
|
@@ -47,22 +48,34 @@ From within any git repository, simply do a `lolcommits --enable`. From that poi
|
|
47
48
|
Don't worry about it too much, half the fun of lolcommits is forgetting it's installed!
|
48
49
|
|
49
50
|
### Other commands
|
50
|
-
Ok, if you insist... Since you know about `--enable`, common sense
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
51
|
+
Ok, if you insist... Since you know about `--enable`, common sense suggests there is also a repository specific `--disable`, hopefully you can guess what that does. Other handy common commands include `--last`, which will open for display your most recent lolcommit image, or `--browse`, which pops open the directory containing all the lolcommit images for your current repository. You can always do `--help` for a full list of available commands.
|
52
|
+
|
53
|
+
**NOTE**: Any extra arguments you pass with the --enable command are auto-appended to the git-commit capture command. For example;
|
54
|
+
|
55
|
+
lolcommits --enable --delay=5 --animate=4 --fork
|
56
|
+
|
57
|
+
Will configure capturing of an animated gif (4 secs) after a 5 sec delay in a forked process. See the section below for more capture configuration variables.
|
58
|
+
|
59
|
+
### Capture configuration variables
|
60
|
+
lolcommits has some capture options for additional lulz. You can enable these via environment variables like so;
|
61
|
+
|
62
|
+
* `LOLCOMMITS_DEVICE` set a webcam device - **mac and linux only**
|
63
|
+
* `LOLCOMMITS_ANIMATE` (in seconds) set time for capturing an animated gif - **mac only & requires ffmpeg**
|
64
|
+
* `LOLCOMMITS_DELAY` (in seconds) set delay persistently (for slow webcams to warmup)
|
65
|
+
* `LOLCOMMITS_FONT` set font file location for lolcommit text
|
66
|
+
* `LOLCOMMITS_FORK` fork lolcommit runner (capture command forks to a new process, speedily returning you to your terminal)
|
67
|
+
* `LOLCOMMITS_STEALTH` disable notification messages at commit time
|
68
|
+
|
69
|
+
Or they can be set via the following arguments in the capture command (located in your repository's `.git/hooks/post-commit` file).
|
70
|
+
|
71
|
+
* `--device=DEVICE` or `-d DEVICE`
|
72
|
+
* `--animate=SECONDS` or `-a SECONDS`
|
73
|
+
* `--delay=SECONDS` or `-w SECONDS`
|
74
|
+
* `--font=FONT_PATH` or `-f FONT_PATH`
|
75
|
+
* `--fork`
|
76
|
+
* `--stealth`
|
77
|
+
|
78
|
+
Read how to [configure commit capturing](https://github.com/mroth/lolcommits/wiki/Configure-Commit-Capturing) for more details.
|
66
79
|
|
67
80
|
### Animated Gif Capturing
|
68
81
|
Animated gifs (Mac/OSX only) can take a while to generate (depending on the number of seconds you capture and the capabilities of your machine). `ffmpeg` is required and can be installed with brew like so;
|
data/bin/lolcommits
CHANGED
@@ -62,6 +62,35 @@ def die_if_not_git_repo!
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
+
def good_shebang?
|
66
|
+
File.read(HOOK_PATH).lines.first =~ /^\#\!\/bin\/.*sh/
|
67
|
+
end
|
68
|
+
|
69
|
+
def lolcommits_hook?
|
70
|
+
File.exists?(HOOK_PATH) &&
|
71
|
+
File.read(HOOK_PATH).to_s =~ /lolcommits.*\(begin\)(.*\n)*.*lolcommits.*\(end\)/
|
72
|
+
end
|
73
|
+
|
74
|
+
def remove_existing_hook
|
75
|
+
hook = File.read(HOOK_PATH)
|
76
|
+
out = File.open(HOOK_PATH, 'w')
|
77
|
+
skip = false
|
78
|
+
|
79
|
+
hook.lines.each do |line|
|
80
|
+
if !skip && (line =~ /lolcommits.*\(begin\)/)
|
81
|
+
skip = true
|
82
|
+
end
|
83
|
+
|
84
|
+
out << line unless skip
|
85
|
+
|
86
|
+
if skip && (line =~ /lolcommits.*\(end\)/)
|
87
|
+
skip = false
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
out.close
|
92
|
+
end
|
93
|
+
|
65
94
|
#
|
66
95
|
# NO ARGUMENTS SPECIFIED, HELP THE USER OUT
|
67
96
|
#
|
@@ -89,34 +118,58 @@ def do_enable
|
|
89
118
|
Dir.mkdir(HOOK_DIR)
|
90
119
|
end
|
91
120
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
121
|
+
# clear away any existing lolcommits hook
|
122
|
+
if hook_exists = File.exists?(HOOK_PATH)
|
123
|
+
remove_existing_hook
|
124
|
+
|
125
|
+
# check for a good shebang line in the existing hook
|
126
|
+
unless good_shebang?
|
127
|
+
warn "the existing hook (at #{HOOK_PATH}) doesn't start with with a good shebang; like #!/bin/sh"
|
128
|
+
exit 1
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
File.open(HOOK_PATH, hook_exists ? 'a' : 'w') do |f|
|
133
|
+
f.write(hook_script(!hook_exists))
|
96
134
|
end
|
97
135
|
|
98
|
-
ruby_path = Lolcommits::Configuration.command_which('ruby')
|
99
|
-
hook_export = "export PATH=\"#{ruby_path}:$PATH\"\n" if ruby_path
|
100
|
-
doc = "#!/bin/sh\n#{hook_export}lolcommits --capture\n"
|
101
|
-
File.open(HOOK_PATH, 'w') {|f| f.write(doc) }
|
102
136
|
FileUtils.chmod 0755, HOOK_PATH
|
103
|
-
|
137
|
+
|
138
|
+
info "installed lolcommmit hook to:"
|
104
139
|
info " -> #{File.expand_path(HOOK_PATH)}"
|
105
140
|
info "(to remove later, you can use: lolcommits --disable)"
|
106
141
|
# we dont symlink, but rather install a small stub that calls the one from path
|
107
142
|
# that way, as gem version changes, script updates even if new file thus breaking symlink
|
108
143
|
end
|
109
144
|
|
145
|
+
def hook_script(add_shebang = true)
|
146
|
+
shebang = add_shebang ? "#!/bin/sh\n\n" : ''
|
147
|
+
ruby_path = Lolcommits::Configuration.command_which('ruby')
|
148
|
+
hook_export = "export PATH=\"#{ruby_path}:$PATH\"\n" if ruby_path
|
149
|
+
capture_cmd = 'lolcommits --capture'
|
150
|
+
capture_args = " #{ARGV[1..-1].join(' ')}" if ARGV.length > 1
|
151
|
+
|
152
|
+
<<-EOS
|
153
|
+
#{shebang}### lolcommits hook (begin) ###
|
154
|
+
#{hook_export}#{capture_cmd}#{capture_args}
|
155
|
+
### lolcommits hook (end) ###
|
156
|
+
EOS
|
157
|
+
end
|
158
|
+
|
110
159
|
#
|
111
160
|
# IF --DISABLE, DO DISABLE
|
112
161
|
#
|
113
162
|
def do_disable
|
114
|
-
if
|
115
|
-
|
116
|
-
|
117
|
-
|
163
|
+
if lolcommits_hook?
|
164
|
+
remove_existing_hook
|
165
|
+
info "uninstalled lolcommits hook (from #{HOOK_PATH})"
|
166
|
+
elsif File.exists?(HOOK_PATH)
|
167
|
+
info "couldn't find an lolcommits hook (at #{HOOK_PATH})"
|
168
|
+
if File.read(HOOK_PATH) =~ /lolcommit/
|
169
|
+
info "warning: an older-style lolcommit hook may still exist, edit #{HOOK_PATH} to remove it manually"
|
170
|
+
end
|
118
171
|
else
|
119
|
-
info "
|
172
|
+
info "no post commit hook found (at #{HOOK_PATH}), so there is nothing to uninstall"
|
120
173
|
end
|
121
174
|
end
|
122
175
|
|
@@ -387,7 +440,7 @@ if not (Choice.choices[:enable] || Choice.choices[:disable])
|
|
387
440
|
elsif Choice.choices[:configure]
|
388
441
|
do_configure()
|
389
442
|
elsif Choice.choices[:show_config]
|
390
|
-
puts configuration
|
443
|
+
puts configuration
|
391
444
|
elsif Choice.choices[:plugins]
|
392
445
|
configuration.puts_plugins()
|
393
446
|
elsif Choice.choices[:last]
|
data/features/lolcommits.feature
CHANGED
@@ -21,16 +21,50 @@ Feature: Basic UI functionality
|
|
21
21
|
Given a git repository named "loltest" with no "post-commit" hook
|
22
22
|
When I cd to "loltest"
|
23
23
|
And I successfully run `lolcommits --enable`
|
24
|
-
Then the output should contain "installed lolcommmit hook
|
24
|
+
Then the output should contain "installed lolcommmit hook to:"
|
25
25
|
And the output should contain "(to remove later, you can use: lolcommits --disable)"
|
26
26
|
And a file named ".git/hooks/post-commit" should exist
|
27
|
+
And the file ".git/hooks/post-commit" should contain "lolcommits --capture"
|
28
|
+
And the exit status should be 0
|
29
|
+
|
30
|
+
Scenario: Enable in a git repository that already has a post-commit hook
|
31
|
+
Given a git repository named "loltest" with a "post-commit" hook
|
32
|
+
And the "loltest" repository "post-commit" hook has content "#!/bin/sh\n\n/my/own/script"
|
33
|
+
When I cd to "loltest"
|
34
|
+
And I successfully run `lolcommits --enable`
|
35
|
+
Then the output should contain "installed lolcommmit hook to:"
|
36
|
+
And the output should contain "(to remove later, you can use: lolcommits --disable)"
|
37
|
+
And a file named ".git/hooks/post-commit" should exist
|
38
|
+
And the file ".git/hooks/post-commit" should contain "#!/bin/sh"
|
39
|
+
And the file ".git/hooks/post-commit" should contain "/my/own/script"
|
40
|
+
And the file ".git/hooks/post-commit" should contain "lolcommits --capture"
|
41
|
+
And the exit status should be 0
|
42
|
+
|
43
|
+
Scenario: Enable in a git repository that already has post-commit hook with a bad shebang
|
44
|
+
Given a git repository named "loltest" with a "post-commit" hook
|
45
|
+
And the "loltest" repository "post-commit" hook has content "#!/bin/ruby"
|
46
|
+
When I cd to "loltest"
|
47
|
+
And I run `lolcommits --enable`
|
48
|
+
Then the output should contain "doesn't start with with a good shebang"
|
49
|
+
And the file ".git/hooks/post-commit" should not contain "lolcommits --capture"
|
50
|
+
And the exit status should be 1
|
51
|
+
|
52
|
+
Scenario: Enable in a git repository passing capture arguments
|
53
|
+
Given a git repository named "loltest" with no "post-commit" hook
|
54
|
+
When I cd to "loltest"
|
55
|
+
And I successfully run `lolcommits --enable -w 5 --fork`
|
56
|
+
Then the output should contain "installed lolcommmit hook to:"
|
57
|
+
And the output should contain "(to remove later, you can use: lolcommits --disable)"
|
58
|
+
And a file named ".git/hooks/post-commit" should exist
|
59
|
+
And the file ".git/hooks/post-commit" should contain "lolcommits --capture -w 5 --fork"
|
27
60
|
And the exit status should be 0
|
28
61
|
|
29
62
|
Scenario: Disable in a enabled git repository
|
30
63
|
Given I am in a git repository named "lolenabled" with lolcommits enabled
|
31
64
|
When I successfully run `lolcommits --disable`
|
32
|
-
Then the output should contain "
|
33
|
-
And a file named ".git/hooks/post-commit" should
|
65
|
+
Then the output should contain "uninstalled"
|
66
|
+
And a file named ".git/hooks/post-commit" should exist
|
67
|
+
And the file ".git/hooks/post-commit" should not contain "lolcommits --capture"
|
34
68
|
And the exit status should be 0
|
35
69
|
|
36
70
|
Scenario: Trying to enable while not in a git repo fails
|
@@ -100,7 +134,7 @@ Feature: Basic UI functionality
|
|
100
134
|
Then the output should contain a list of plugins
|
101
135
|
And the output should contain "Name of plugin to configure:"
|
102
136
|
Then the output should contain "enabled:"
|
103
|
-
Then the output should contain "Successfully
|
137
|
+
Then the output should contain "Successfully configured plugin: loltext"
|
104
138
|
And a file named "../.lolcommits/config-test/config.yml" should exist
|
105
139
|
When I successfully run `lolcommits --show-config`
|
106
140
|
Then the output should contain "loltext:"
|
@@ -112,7 +146,7 @@ Feature: Basic UI functionality
|
|
112
146
|
And I run `lolcommits --config` and wait for output
|
113
147
|
When I enter "loltext" for "Name of plugin to configure"
|
114
148
|
And I enter "true" for "enabled"
|
115
|
-
Then I should be presented "Successfully
|
149
|
+
Then I should be presented "Successfully configured plugin: loltext"
|
116
150
|
And a file named "../.lolcommits/config-test/config.yml" should exist
|
117
151
|
When I successfully run `lolcommits --show-config`
|
118
152
|
Then the output should contain "loltext:"
|
@@ -124,7 +158,7 @@ Feature: Basic UI functionality
|
|
124
158
|
And I run `lolcommits --config --test` and wait for output
|
125
159
|
And I enter "loltext" for "Name of plugin to configure"
|
126
160
|
And I enter "true" for "enabled"
|
127
|
-
Then I should be presented "Successfully
|
161
|
+
Then I should be presented "Successfully configured plugin: loltext"
|
128
162
|
And a file named "../.lolcommits/test/config.yml" should exist
|
129
163
|
When I successfully run `lolcommits --test --show-config`
|
130
164
|
Then the output should contain "loltext:"
|
data/features/plugins.feature
CHANGED
@@ -9,7 +9,7 @@ Feature: Plugins Work
|
|
9
9
|
And I enter "b2a70ac0b64e012fa61522000a8c42dc" for "api_key"
|
10
10
|
And I enter "b2a720b0b64e012fa61522000a8c42dc" for "api_secret"
|
11
11
|
And I enter "c4aed530b64e012fa61522000a8c42dc" for "repo_id"
|
12
|
-
Then I should be presented "Successfully
|
12
|
+
Then I should be presented "Successfully configured plugin: dot_com"
|
13
13
|
When I do a git commit
|
14
14
|
Then the output should contain "*** Preserving this moment in history."
|
15
15
|
And there should be exactly 1 jpg in "../.lolcommits/dot_com"
|
@@ -19,7 +19,7 @@ Feature: Plugins Work
|
|
19
19
|
And I run `lolcommits --config` and wait for output
|
20
20
|
And I enter "loltext" for "Plugin Name"
|
21
21
|
And I enter "false" for "enabled"
|
22
|
-
Then I should be presented "Successfully
|
22
|
+
Then I should be presented "Successfully configured plugin: loltext"
|
23
23
|
When I do a git commit
|
24
24
|
Then the output should contain "*** Preserving this moment in history."
|
25
25
|
And there should be exactly 1 jpg in "../.lolcommits/loltext"
|
@@ -30,8 +30,8 @@ Feature: Plugins Work
|
|
30
30
|
And I enter "lolsrv" for "Plugin Name"
|
31
31
|
And I enter "true" for "enabled"
|
32
32
|
And I enter "http://localhost" for "server"
|
33
|
-
Then I should be presented "Successfully
|
33
|
+
Then I should be presented "Successfully configured plugin: lolsrv"
|
34
34
|
When I do a git commit
|
35
35
|
Then the output should contain "*** Preserving this moment in history."
|
36
36
|
And there should be exactly 1 jpg in "../.lolcommits/lolsrv"
|
37
|
-
|
37
|
+
|
@@ -27,6 +27,12 @@ Given /^the git repository named "(.*?)" has a "(.*?)" hook$/ do |repo_name, hoo
|
|
27
27
|
touch(hook_file) if not File.exists? hook_file
|
28
28
|
end
|
29
29
|
|
30
|
+
Given /^the "(.*?)" repository "(.*?)" hook has content "(.*?)"$/ do |repo_name, hook_name, hook_content|
|
31
|
+
step %{the git repository named "#{repo_name}" has a "#{hook_name}" hook}
|
32
|
+
hook_file = File.join current_dir, repo_name, ".git", "hooks", hook_name
|
33
|
+
File.open(hook_file, 'w') { |f| f.write(hook_content) }
|
34
|
+
end
|
35
|
+
|
30
36
|
Given /^a git repository named "(.*?)" with (a|no) "(.*?)" hook$/ do |repo_name, yesno_modifier, hook_name|
|
31
37
|
step %{a git repository named "#{repo_name}"}
|
32
38
|
step %{the git repository named "#{repo_name}" has #{yesno_modifier} "#{hook_name}" hook}
|
@@ -28,15 +28,15 @@ module Lolcommits
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
def
|
32
|
-
if File.exists?(
|
33
|
-
YAML.load(File.open(
|
31
|
+
def read_configuration
|
32
|
+
if File.exists?(configuration_file)
|
33
|
+
YAML.load(File.open(configuration_file))
|
34
34
|
else
|
35
35
|
nil
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
-
def
|
39
|
+
def configuration_file
|
40
40
|
"#{self.loldir}/config.yml"
|
41
41
|
end
|
42
42
|
|
@@ -95,50 +95,56 @@ module Lolcommits
|
|
95
95
|
end
|
96
96
|
|
97
97
|
def puts_plugins
|
98
|
-
|
99
|
-
puts "Available plugins: #{names.join(', ')}"
|
98
|
+
puts "Available plugins: #{Lolcommits::PLUGINS.map(&:name).join(', ')}"
|
100
99
|
end
|
101
100
|
|
102
|
-
def
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
end
|
101
|
+
def ask_for_plugin_name
|
102
|
+
puts_plugins
|
103
|
+
print "Name of plugin to configure: "
|
104
|
+
STDIN.gets.strip
|
105
|
+
end
|
108
106
|
|
109
|
-
|
110
|
-
|
111
|
-
|
107
|
+
def find_plugin(plugin_name)
|
108
|
+
Lolcommits::PLUGINS.each do |plugin|
|
109
|
+
if plugin.name == plugin_name
|
110
|
+
return plugin.new(nil)
|
111
|
+
end
|
112
112
|
end
|
113
113
|
|
114
|
-
|
114
|
+
puts "Unable to find plugin: '#{plugin_name}'"
|
115
|
+
puts_plugins
|
116
|
+
end
|
115
117
|
|
116
|
-
|
117
|
-
|
118
|
-
|
118
|
+
def do_configure!(plugin_name)
|
119
|
+
if plugin_name.to_s.strip.empty?
|
120
|
+
plugin_name = ask_for_plugin_name
|
119
121
|
end
|
120
122
|
|
121
|
-
if
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
123
|
+
if plugin = find_plugin(plugin_name)
|
124
|
+
config = self.read_configuration || Hash.new
|
125
|
+
plugin_config = plugin.configure_options!
|
126
|
+
# having a plugin_config, means configuring went OK
|
127
|
+
if plugin_config
|
128
|
+
# save plugin and print config
|
129
|
+
config[plugin_name] = plugin_config
|
130
|
+
save(config)
|
131
|
+
puts self
|
132
|
+
puts "\nSuccessfully configured plugin: #{plugin_name}"
|
133
|
+
else
|
134
|
+
puts "\nAborted plugin configuration for: #{plugin_name}"
|
129
135
|
end
|
130
|
-
else
|
131
|
-
options = forced_options
|
132
136
|
end
|
137
|
+
end
|
133
138
|
|
134
|
-
|
135
|
-
|
136
|
-
File.open(self.
|
137
|
-
f.write(
|
139
|
+
def save(config)
|
140
|
+
config_file_contents = config.to_yaml
|
141
|
+
File.open(self.configuration_file, 'w') do |f|
|
142
|
+
f.write(config_file_contents)
|
138
143
|
end
|
144
|
+
end
|
139
145
|
|
140
|
-
|
141
|
-
|
146
|
+
def to_s
|
147
|
+
read_configuration.to_yaml.to_s
|
142
148
|
end
|
143
149
|
|
144
150
|
def self.is_mac?
|