alloy-kicker 1.0.0 → 1.1.1
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.
- data/README.rdoc +11 -6
- data/Rakefile +10 -2
- data/VERSION.yml +2 -2
- data/lib/kicker.rb +59 -48
- data/test/kicker_test.rb +45 -48
- metadata +12 -21
- data/kicker.gemspec +0 -31
data/README.rdoc
CHANGED
@@ -2,15 +2,16 @@
|
|
2
2
|
|
3
3
|
A simple OS X CLI tool which uses FSEvents to run a given shell command.
|
4
4
|
|
5
|
+
http://github.com/alloy/kicker/raw/master/html/images/kikker.jpg
|
6
|
+
|
5
7
|
== Usage
|
6
8
|
|
7
|
-
|
8
|
-
|
9
|
+
Give it paths to files or directories and a shell command to execute when any
|
10
|
+
changes occur.
|
9
11
|
|
10
|
-
Usage: kicker [options] -e [command] [
|
12
|
+
Usage: kicker [options] -e [command] [paths to watch]
|
11
13
|
-e, --execute [COMMAND] The command to execute.
|
12
14
|
--[no-]growl Whether or not to use Growl. Default is to use growl.
|
13
|
-
--growl-message [MESSAGE] The message to Growl when the command succeeded.
|
14
15
|
--growl-command [COMMAND] The command to execute when the Growl succeeded message is clicked.
|
15
16
|
|
16
17
|
== Examples
|
@@ -21,12 +22,16 @@ Show all files whenever a change occurs in the current work directory:
|
|
21
22
|
|
22
23
|
Run a Rake task whenever a given file is changed:
|
23
24
|
|
24
|
-
$ kicker -e "
|
25
|
+
$ kicker -e "rake guides" guides/source/nested_model_forms.textile
|
25
26
|
|
26
27
|
Run a Run task whenever a given file is changed and specify a command to be
|
27
28
|
executed if the user clicks a `succeeded' Growl message:
|
28
29
|
|
29
|
-
$ kicker -e "
|
30
|
+
$ kicker -e "rake guides" --growl-command "open -a Safari guides/output/nested_model_forms.html" guides/source/nested_model_forms.textile
|
31
|
+
|
32
|
+
And for fun, ghetto-autotest:
|
33
|
+
|
34
|
+
$ kicker -e "ruby test/test_case.rb" test/test_case.rb lib/file.rb
|
30
35
|
|
31
36
|
== Installation
|
32
37
|
|
data/Rakefile
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'rake'
|
3
3
|
require 'rake/testtask'
|
4
|
+
require 'rake/rdoctask'
|
4
5
|
|
5
6
|
begin
|
6
7
|
require 'jeweler'
|
@@ -11,9 +12,9 @@ begin
|
|
11
12
|
gem.homepage = "http://github.com/alloy/kicker"
|
12
13
|
gem.authors = ["Eloy Duran"]
|
13
14
|
gem.executables << 'kicker'
|
14
|
-
gem.files
|
15
|
+
gem.files.concat FileList['vendor/**/*']
|
15
16
|
gem.require_paths = ['vendor']
|
16
|
-
gem.has_rdoc =
|
17
|
+
gem.has_rdoc = true
|
17
18
|
end
|
18
19
|
rescue LoadError
|
19
20
|
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
@@ -25,4 +26,11 @@ Rake::TestTask.new do |t|
|
|
25
26
|
t.options = '-rs'
|
26
27
|
end
|
27
28
|
|
29
|
+
namespace :docs do
|
30
|
+
Rake::RDocTask.new('generate') do |t|
|
31
|
+
t.main = "README.rdoc"
|
32
|
+
t.rdoc_files.include("README.rdoc", "lib/**/*.rb")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
28
36
|
task :default => :test
|
data/VERSION.yml
CHANGED
data/lib/kicker.rb
CHANGED
@@ -6,7 +6,7 @@ require 'optparse'
|
|
6
6
|
class Kicker
|
7
7
|
OPTION_PARSER = lambda do |options|
|
8
8
|
OptionParser.new do |opts|
|
9
|
-
opts.banner = "Usage: #{$0} [options] -e [command] [
|
9
|
+
opts.banner = "Usage: #{$0} [options] -e [command] [paths to watch]"
|
10
10
|
|
11
11
|
opts.on('-e', '--execute [COMMAND]', 'The command to execute.') do |command|
|
12
12
|
options[:command] = command
|
@@ -26,7 +26,7 @@ class Kicker
|
|
26
26
|
argv = argv.dup
|
27
27
|
options = { :growl => true }
|
28
28
|
OPTION_PARSER.call(options).parse!(argv)
|
29
|
-
options[:
|
29
|
+
options[:paths] = argv
|
30
30
|
options
|
31
31
|
end
|
32
32
|
|
@@ -45,37 +45,25 @@ class Kicker
|
|
45
45
|
end
|
46
46
|
|
47
47
|
attr_writer :command
|
48
|
-
attr_reader :
|
48
|
+
attr_reader :paths
|
49
49
|
attr_accessor :use_growl, :growl_command
|
50
50
|
|
51
51
|
def initialize(options)
|
52
|
-
|
52
|
+
@paths = options[:paths].map { |path| File.expand_path(path) }
|
53
53
|
@command = options[:command]
|
54
54
|
@use_growl = options[:growl]
|
55
55
|
@growl_command = options[:growl_command]
|
56
56
|
end
|
57
57
|
|
58
|
-
def path=(path)
|
59
|
-
@path = File.expand_path(path)
|
60
|
-
@file, @path = @path, File.dirname(@path) unless File.directory?(@path)
|
61
|
-
end
|
62
|
-
|
63
58
|
def start
|
64
59
|
validate_options!
|
65
60
|
|
66
|
-
log "Watching for changes on
|
61
|
+
log "Watching for changes on: #{@paths.join(', ')}"
|
67
62
|
log "With command: #{command}"
|
68
63
|
log ''
|
69
64
|
|
70
|
-
|
71
|
-
|
72
|
-
trap('INT') do
|
73
|
-
log "Cleaning up…"
|
74
|
-
watch_dog.stop
|
75
|
-
exit
|
76
|
-
end
|
77
|
-
|
78
|
-
Growl::Notifier.sharedInstance.register('Kicker', Kicker::GROWL_NOTIFICATIONS.values) if @use_growl
|
65
|
+
run_watch_dog!
|
66
|
+
start_growl! if @use_growl
|
79
67
|
|
80
68
|
OSX.CFRunLoopRun
|
81
69
|
end
|
@@ -84,33 +72,33 @@ class Kicker
|
|
84
72
|
"sh -c #{@command.inspect}"
|
85
73
|
end
|
86
74
|
|
87
|
-
|
88
|
-
|
75
|
+
private
|
76
|
+
|
77
|
+
def validate_options!
|
78
|
+
validate_paths_and_command!
|
79
|
+
validate_paths_exist!
|
89
80
|
end
|
90
81
|
|
91
|
-
def
|
92
|
-
|
82
|
+
def validate_paths_and_command!
|
83
|
+
if @paths.empty? && @command.nil?
|
84
|
+
puts OPTION_PARSER.call(nil).help
|
85
|
+
exit
|
86
|
+
end
|
93
87
|
end
|
94
88
|
|
95
|
-
def
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
output.strip.split("\n").each { |line| log " #{line}" }
|
101
|
-
|
102
|
-
log "Command #{last_command_succeeded? ? 'succeeded' : "failed (#{last_command_status})"}"
|
103
|
-
|
104
|
-
if @use_growl
|
105
|
-
if last_command_succeeded?
|
106
|
-
callback = @growl_command.nil? ? GROWL_DEFAULT_CALLBACK : lambda { system(@growl_command) }
|
107
|
-
growl(GROWL_NOTIFICATIONS[:succeeded], "Kicker: Command succeeded", output, &callback)
|
108
|
-
else
|
109
|
-
growl(GROWL_NOTIFICATIONS[:failed], "Kicker: Command failed (#{last_command_status})", output, &GROWL_DEFAULT_CALLBACK)
|
89
|
+
def validate_paths_exist!
|
90
|
+
@paths.each do |path|
|
91
|
+
unless File.exist?(path)
|
92
|
+
puts "The given path `#{path}' does not exist"
|
93
|
+
exit 1
|
110
94
|
end
|
111
95
|
end
|
112
96
|
end
|
113
97
|
|
98
|
+
def log(message)
|
99
|
+
puts "[#{Time.now}] #{message}"
|
100
|
+
end
|
101
|
+
|
114
102
|
def last_command_succeeded?
|
115
103
|
$?.success?
|
116
104
|
end
|
@@ -119,22 +107,45 @@ class Kicker
|
|
119
107
|
$?.to_i
|
120
108
|
end
|
121
109
|
|
122
|
-
def
|
123
|
-
|
124
|
-
validate_path_exists!
|
110
|
+
def start_growl!
|
111
|
+
Growl::Notifier.sharedInstance.register('Kicker', Kicker::GROWL_NOTIFICATIONS.values)
|
125
112
|
end
|
126
113
|
|
127
|
-
def
|
128
|
-
|
129
|
-
|
114
|
+
def run_watch_dog!
|
115
|
+
dirs = @paths.map { |path| File.directory?(path) ? path : File.dirname(path) }
|
116
|
+
watch_dog = Rucola::FSEvents.start_watching(*dirs) { |events| process(events) }
|
117
|
+
|
118
|
+
trap('INT') do
|
119
|
+
log "Cleaning up…"
|
120
|
+
watch_dog.stop
|
130
121
|
exit
|
131
122
|
end
|
132
123
|
end
|
133
124
|
|
134
|
-
def
|
135
|
-
|
136
|
-
|
137
|
-
|
125
|
+
def process(events)
|
126
|
+
events.each do |event|
|
127
|
+
@paths.each do |path|
|
128
|
+
return execute! if event.last_modified_file =~ /^#{path}/
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
def execute!
|
134
|
+
log "Change occured. Executing command:"
|
135
|
+
growl(GROWL_NOTIFICATIONS[:change], 'Kicker: Change occured', 'Executing command') if @use_growl
|
136
|
+
|
137
|
+
output = `#{command}`
|
138
|
+
output.strip.split("\n").each { |line| log " #{line}" }
|
139
|
+
|
140
|
+
log "Command #{last_command_succeeded? ? 'succeeded' : "failed (#{last_command_status})"}"
|
141
|
+
|
142
|
+
if @use_growl
|
143
|
+
if last_command_succeeded?
|
144
|
+
callback = @growl_command.nil? ? GROWL_DEFAULT_CALLBACK : lambda { system(@growl_command) }
|
145
|
+
growl(GROWL_NOTIFICATIONS[:succeeded], "Kicker: Command succeeded", output, &callback)
|
146
|
+
else
|
147
|
+
growl(GROWL_NOTIFICATIONS[:failed], "Kicker: Command failed (#{last_command_status})", output, &GROWL_DEFAULT_CALLBACK)
|
148
|
+
end
|
138
149
|
end
|
139
150
|
end
|
140
151
|
end
|
data/test/kicker_test.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
require File.expand_path('../test_helper', __FILE__)
|
2
2
|
|
3
3
|
describe "Kicker.parse_options" do
|
4
|
-
it "should parse the
|
5
|
-
Kicker.parse_options(
|
4
|
+
it "should parse the paths" do
|
5
|
+
Kicker.parse_options(%w{ /some/file.rb })[:paths].should == %w{ /some/file.rb }
|
6
|
+
Kicker.parse_options(%w{ /some/file.rb /a/dir /and/some/other/file.rb })[:paths].should ==
|
7
|
+
%w{ /some/file.rb /a/dir /and/some/other/file.rb }
|
6
8
|
end
|
7
9
|
|
8
10
|
it "should parse the command" do
|
@@ -22,41 +24,30 @@ end
|
|
22
24
|
|
23
25
|
describe "Kicker, when initializing" do
|
24
26
|
before do
|
25
|
-
@kicker = Kicker.new(:
|
27
|
+
@kicker = Kicker.new(:paths => %w{ /some/dir a/relative/path }, :command => 'ls -l')
|
26
28
|
end
|
27
29
|
|
28
|
-
it "should return the
|
29
|
-
|
30
|
-
Kicker.new(:path => '/some/dir').path.should == '/some/dir'
|
30
|
+
it "should return the extended paths to watch" do
|
31
|
+
@kicker.paths.should == ['/some/dir', File.expand_path('a/relative/path')]
|
31
32
|
end
|
32
33
|
|
33
34
|
it "should return the command to execute once a change occurs" do
|
34
|
-
|
35
|
-
end
|
36
|
-
|
37
|
-
it "should return the dirname of the path if the given path is a file" do
|
38
|
-
File.stubs(:directory?).with('/some/file.rb').returns(false)
|
39
|
-
Kicker.new(:path => '/some/file.rb').path.should == '/some'
|
40
|
-
end
|
41
|
-
|
42
|
-
it "should return the path to the file if the given path is a file" do
|
43
|
-
@kicker = Kicker.new(:path => '/some/file.rb', :command => 'ls -l')
|
44
|
-
@kicker.file.should == '/some/file.rb'
|
35
|
+
@kicker.command.should == 'sh -c "ls -l"'
|
45
36
|
end
|
46
37
|
end
|
47
38
|
|
48
39
|
describe "Kicker, when starting" do
|
49
40
|
before do
|
50
|
-
@kicker = Kicker.new(:
|
41
|
+
@kicker = Kicker.new(:paths => %w{ /some/file.rb }, :command => 'ls -l')
|
51
42
|
@kicker.stubs(:log)
|
52
43
|
Rucola::FSEvents.stubs(:start_watching)
|
53
44
|
OSX.stubs(:CFRunLoopRun)
|
54
45
|
end
|
55
46
|
|
56
|
-
it "should show the usage banner
|
57
|
-
@kicker.instance_variable_set("@
|
47
|
+
it "should show the usage banner and exit when there are no paths and a command" do
|
48
|
+
@kicker.instance_variable_set("@paths", [])
|
58
49
|
@kicker.command = nil
|
59
|
-
@kicker.stubs(:
|
50
|
+
@kicker.stubs(:validate_paths_exist!)
|
60
51
|
|
61
52
|
Kicker::OPTION_PARSER.stubs(:call).returns(mock('OptionParser', :help => 'help'))
|
62
53
|
@kicker.expects(:puts).with("help")
|
@@ -65,17 +56,25 @@ describe "Kicker, when starting" do
|
|
65
56
|
@kicker.start
|
66
57
|
end
|
67
58
|
|
68
|
-
it "should warn the user if the given
|
69
|
-
@kicker.expects(:puts).with("The given path
|
59
|
+
it "should warn the user and exit if any of the given paths doesn't exist" do
|
60
|
+
@kicker.expects(:puts).with("The given path `/some/file.rb' does not exist")
|
70
61
|
@kicker.expects(:exit).with(1)
|
71
62
|
|
72
63
|
@kicker.start
|
73
64
|
end
|
74
65
|
|
75
|
-
it "should start a FSEvents stream
|
66
|
+
it "should start a FSEvents stream which watches all paths, but the dirnames of paths if they're files" do
|
67
|
+
@kicker.stubs(:validate_options!)
|
68
|
+
File.stubs(:directory?).with('/some/file.rb').returns(false)
|
69
|
+
|
70
|
+
Rucola::FSEvents.expects(:start_watching).with('/some')
|
71
|
+
@kicker.start
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should start a FSEvents stream with a block which calls #process with any generated events" do
|
76
75
|
@kicker.stubs(:validate_options!)
|
77
76
|
|
78
|
-
Rucola::FSEvents.expects(:start_watching).
|
77
|
+
Rucola::FSEvents.expects(:start_watching).yields(['event'])
|
79
78
|
@kicker.expects(:process).with(['event'])
|
80
79
|
|
81
80
|
@kicker.start
|
@@ -120,40 +119,38 @@ end
|
|
120
119
|
|
121
120
|
describe "Kicker, when a change occurs" do
|
122
121
|
before do
|
123
|
-
File.stubs(:directory?).returns(false)
|
124
122
|
Kicker.any_instance.stubs(:last_command_succeeded?).returns(true)
|
125
123
|
Kicker.any_instance.stubs(:log)
|
126
|
-
@kicker = Kicker.new(:
|
124
|
+
@kicker = Kicker.new(:paths => %w{ /some/file.rb /some/dir }, :command => 'ls -l')
|
127
125
|
end
|
128
126
|
|
129
|
-
it "should execute the command if a change occured to
|
130
|
-
event =
|
127
|
+
it "should execute the command if a change occured to a watched path which is a file" do
|
128
|
+
event = stub('Event', :last_modified_file => '/some/file.rb')
|
131
129
|
|
132
130
|
@kicker.expects(:`).with(@kicker.command).returns('')
|
133
|
-
@kicker.process
|
131
|
+
@kicker.send(:process, [event])
|
134
132
|
end
|
135
133
|
|
136
|
-
it "should
|
137
|
-
event =
|
134
|
+
it "should execute the command if a change occured to some file in watched path which is a directory" do
|
135
|
+
event = stub('Event', :last_modified_file => '/some/dir/with/file.rb')
|
138
136
|
|
139
|
-
@kicker.expects(:`).
|
140
|
-
@kicker.process
|
137
|
+
@kicker.expects(:`).with(@kicker.command).returns('')
|
138
|
+
@kicker.send(:process, [event])
|
141
139
|
end
|
142
140
|
|
143
|
-
it "should execute the command if a change occured
|
144
|
-
|
145
|
-
|
146
|
-
event = mock('Rucola::FSEvents::Event')
|
141
|
+
it "should _not_ execute the command if a change occured to a file that isn't being watched" do
|
142
|
+
event1 = stub('Event', :last_modified_file => '/some/other_file.rb')
|
143
|
+
event2 = stub('Event', :last_modified_file => '/some/not/watched/dir/with/file.rb')
|
147
144
|
|
148
|
-
kicker.expects(:`).
|
149
|
-
kicker.process
|
145
|
+
@kicker.expects(:`).never
|
146
|
+
@kicker.send(:process, [event1, event2])
|
150
147
|
end
|
151
148
|
end
|
152
149
|
|
153
150
|
describe "Kicker, in general" do
|
154
151
|
before do
|
155
152
|
Kicker.any_instance.stubs(:last_command_succeeded?).returns(true)
|
156
|
-
@kicker = Kicker.new(:
|
153
|
+
@kicker = Kicker.new(:paths => %w{ /some/dir }, :command => 'ls -l')
|
157
154
|
end
|
158
155
|
|
159
156
|
it "should print a log entry with timestamp" do
|
@@ -161,7 +158,7 @@ describe "Kicker, in general" do
|
|
161
158
|
Time.stubs(:now).returns(now)
|
162
159
|
|
163
160
|
@kicker.expects(:puts).with("[#{now}] the message")
|
164
|
-
@kicker.log
|
161
|
+
@kicker.send(:log, 'the message')
|
165
162
|
end
|
166
163
|
|
167
164
|
it "should log the output of the command indented by 2 spaces and whether or not the command succeeded" do
|
@@ -171,7 +168,7 @@ describe "Kicker, in general" do
|
|
171
168
|
@kicker.expects(:log).with(' line 1')
|
172
169
|
@kicker.expects(:log).with(' line 2')
|
173
170
|
@kicker.expects(:log).with('Command succeeded')
|
174
|
-
@kicker.execute!
|
171
|
+
@kicker.send(:execute!)
|
175
172
|
|
176
173
|
@kicker.stubs(:last_command_succeeded?).returns(false)
|
177
174
|
@kicker.stubs(:last_command_status).returns(123)
|
@@ -179,7 +176,7 @@ describe "Kicker, in general" do
|
|
179
176
|
@kicker.expects(:log).with(' line 1')
|
180
177
|
@kicker.expects(:log).with(' line 2')
|
181
178
|
@kicker.expects(:log).with('Command failed (123)')
|
182
|
-
@kicker.execute!
|
179
|
+
@kicker.send(:execute!)
|
183
180
|
end
|
184
181
|
|
185
182
|
it "should send the Growl messages with the default click callback" do
|
@@ -192,13 +189,13 @@ describe "Kicker, in general" do
|
|
192
189
|
|
193
190
|
@kicker.expects(:growl).with(Kicker::GROWL_NOTIFICATIONS[:change], 'Kicker: Change occured', 'Executing command')
|
194
191
|
@kicker.expects(:growl).with(Kicker::GROWL_NOTIFICATIONS[:succeeded], 'Kicker: Command succeeded', "line 1\nline 2").yields
|
195
|
-
@kicker.execute!
|
192
|
+
@kicker.send(:execute!)
|
196
193
|
|
197
194
|
@kicker.stubs(:last_command_succeeded?).returns(false)
|
198
195
|
@kicker.stubs(:last_command_status).returns(123)
|
199
196
|
@kicker.expects(:growl).with(Kicker::GROWL_NOTIFICATIONS[:change], 'Kicker: Change occured', 'Executing command')
|
200
197
|
@kicker.expects(:growl).with(Kicker::GROWL_NOTIFICATIONS[:failed], 'Kicker: Command failed (123)', "line 1\nline 2").yields
|
201
|
-
@kicker.execute!
|
198
|
+
@kicker.send(:execute!)
|
202
199
|
end
|
203
200
|
|
204
201
|
it "should send the Growl messages with a click callback which executes the specified growl command when succeeded" do
|
@@ -213,12 +210,12 @@ describe "Kicker, in general" do
|
|
213
210
|
|
214
211
|
@kicker.expects(:growl).with(Kicker::GROWL_NOTIFICATIONS[:change], 'Kicker: Change occured', 'Executing command')
|
215
212
|
@kicker.expects(:growl).with(Kicker::GROWL_NOTIFICATIONS[:succeeded], 'Kicker: Command succeeded', "line 1\nline 2").yields
|
216
|
-
@kicker.execute!
|
213
|
+
@kicker.send(:execute!)
|
217
214
|
|
218
215
|
@kicker.stubs(:last_command_succeeded?).returns(false)
|
219
216
|
@kicker.stubs(:last_command_status).returns(123)
|
220
217
|
@kicker.expects(:growl).with(Kicker::GROWL_NOTIFICATIONS[:change], 'Kicker: Change occured', 'Executing command')
|
221
218
|
@kicker.expects(:growl).with(Kicker::GROWL_NOTIFICATIONS[:failed], 'Kicker: Command failed (123)', "line 1\nline 2").yields
|
222
|
-
@kicker.execute!
|
219
|
+
@kicker.send(:execute!)
|
223
220
|
end
|
224
221
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alloy-kicker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eloy Duran
|
@@ -9,46 +9,36 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
13
|
-
default_executable:
|
12
|
+
date: 2009-04-12 00:00:00 -07:00
|
13
|
+
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
16
16
|
description:
|
17
17
|
email: eloy.de.enige@gmail.com
|
18
18
|
executables:
|
19
19
|
- kicker
|
20
|
+
- kicker
|
20
21
|
extensions: []
|
21
22
|
|
22
23
|
extra_rdoc_files:
|
23
|
-
- README.rdoc
|
24
24
|
- LICENSE
|
25
|
+
- README.rdoc
|
25
26
|
files:
|
26
|
-
- bin
|
27
|
-
- bin/kicker
|
28
|
-
- kicker.gemspec
|
29
|
-
- lib
|
30
|
-
- lib/kicker.rb
|
31
27
|
- LICENSE
|
32
|
-
- pkg
|
33
|
-
- pkg/kicker-0.1.0.gem
|
34
|
-
- pkg/kicker-0.1.1.gem
|
35
|
-
- Rakefile
|
36
28
|
- README.rdoc
|
37
|
-
-
|
29
|
+
- Rakefile
|
30
|
+
- VERSION.yml
|
31
|
+
- bin/kicker
|
32
|
+
- lib/kicker.rb
|
38
33
|
- test/kicker_test.rb
|
39
34
|
- test/test_helper.rb
|
40
|
-
- vendor
|
41
|
-
- vendor/growlnotifier
|
42
35
|
- vendor/growlnotifier/growl.rb
|
43
36
|
- vendor/growlnotifier/growl_helpers.rb
|
44
|
-
- vendor/rucola
|
45
37
|
- vendor/rucola/fsevents.rb
|
46
|
-
- VERSION.yml
|
47
38
|
has_rdoc: true
|
48
39
|
homepage: http://github.com/alloy/kicker
|
49
40
|
post_install_message:
|
50
41
|
rdoc_options:
|
51
|
-
- --inline-source
|
52
42
|
- --charset=UTF-8
|
53
43
|
require_paths:
|
54
44
|
- vendor
|
@@ -71,5 +61,6 @@ rubygems_version: 1.2.0
|
|
71
61
|
signing_key:
|
72
62
|
specification_version: 2
|
73
63
|
summary: A simple OS X CLI tool which uses FSEvents to run a given shell command.
|
74
|
-
test_files:
|
75
|
-
|
64
|
+
test_files:
|
65
|
+
- test/kicker_test.rb
|
66
|
+
- test/test_helper.rb
|
data/kicker.gemspec
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
|
3
|
-
Gem::Specification.new do |s|
|
4
|
-
s.name = %q{kicker}
|
5
|
-
s.version = "1.0.0"
|
6
|
-
|
7
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
-
s.authors = ["Eloy Duran"]
|
9
|
-
s.date = %q{2009-03-14}
|
10
|
-
s.default_executable = %q{kicker}
|
11
|
-
s.email = %q{eloy.de.enige@gmail.com}
|
12
|
-
s.executables = ["kicker"]
|
13
|
-
s.extra_rdoc_files = ["README.rdoc", "LICENSE"]
|
14
|
-
s.files = ["bin", "bin/kicker", "kicker.gemspec", "lib", "lib/kicker.rb", "LICENSE", "pkg", "pkg/kicker-0.1.0.gem", "pkg/kicker-0.1.1.gem", "Rakefile", "README.rdoc", "test", "test/kicker_test.rb", "test/test_helper.rb", "vendor", "vendor/growlnotifier", "vendor/growlnotifier/growl.rb", "vendor/growlnotifier/growl_helpers.rb", "vendor/rucola", "vendor/rucola/fsevents.rb", "VERSION.yml"]
|
15
|
-
s.has_rdoc = true
|
16
|
-
s.homepage = %q{http://github.com/alloy/kicker}
|
17
|
-
s.rdoc_options = ["--inline-source", "--charset=UTF-8"]
|
18
|
-
s.require_paths = ["vendor"]
|
19
|
-
s.rubygems_version = %q{1.3.1}
|
20
|
-
s.summary = %q{A simple OS X CLI tool which uses FSEvents to run a given shell command.}
|
21
|
-
|
22
|
-
if s.respond_to? :specification_version then
|
23
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
24
|
-
s.specification_version = 2
|
25
|
-
|
26
|
-
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
27
|
-
else
|
28
|
-
end
|
29
|
-
else
|
30
|
-
end
|
31
|
-
end
|