huck 0.1.0 → 0.2.0
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 +4 -4
- data/bin/huck +33 -0
- data/lib/huck.rb +19 -13
- data/lib/huck/generator.rb +16 -4
- data/lib/huck/generators/json.rb +34 -0
- data/lib/huck/generators/yaml.rb +34 -0
- data/lib/huck/handler.rb +13 -4
- data/lib/huck/handlers/echo.rb +15 -0
- data/lib/huck/handlers/exec.rb +6 -11
- data/lib/huck/receiver.rb +10 -3
- data/lib/huck/receivers/sqs.rb +8 -14
- data/lib/huck/sender.rb +10 -3
- data/lib/huck/senders/sqs.rb +8 -14
- data/lib/huck/util.rb +2 -1
- data/lib/huck/version.rb +1 -1
- data/spec/huck/huck_spec.rb +9 -0
- metadata +11 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a73eb6afba2acf8dd3c721bb47af9255fbdb09aa
|
4
|
+
data.tar.gz: e5967e01e75d5adeecbe7d06863cfea33d1c6241
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dbe365b4814a6050b0386e79a78dd2243ae062432484a92dcce2a92114e2fe663ebc1227513eba270835c407065f733771c0bff0854adbf2cf56394719074604
|
7
|
+
data.tar.gz: 99b9c4a04a7b5513795f6f4cd9f1d74a3e4a8887e5d3b792b89e0e53990decdfcf5fff50ac9a79ad5ccaccf245bf8866a4dc1352913b642dccfefb4cb30e6c36
|
data/bin/huck
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'optparse'
|
3
|
+
require 'huck'
|
4
|
+
|
5
|
+
begin
|
6
|
+
options = Hash.new
|
7
|
+
OptionParser.new do |opts|
|
8
|
+
opts.on '-c [path]' do |v|
|
9
|
+
options[:config] = v
|
10
|
+
end
|
11
|
+
end.parse!
|
12
|
+
|
13
|
+
case ARGV[0]
|
14
|
+
when 'run'
|
15
|
+
Huck.run :config => options[:config]
|
16
|
+
when 'serve'
|
17
|
+
Huck.serve :config => options[:config]
|
18
|
+
else
|
19
|
+
puts <<EOF
|
20
|
+
Usage: huck <run|serve>
|
21
|
+
|
22
|
+
Options:
|
23
|
+
-c The path to a configuration file
|
24
|
+
Defaults to ~/huck.conf
|
25
|
+
EOF
|
26
|
+
exit 1
|
27
|
+
end
|
28
|
+
rescue => e
|
29
|
+
puts "Error: #{e}"
|
30
|
+
exit 1
|
31
|
+
end
|
32
|
+
|
33
|
+
exit 0
|
data/lib/huck.rb
CHANGED
@@ -6,11 +6,14 @@ require 'huck/util'
|
|
6
6
|
require 'huck/generator'
|
7
7
|
require 'huck/generators/facter'
|
8
8
|
require 'huck/generators/ohai'
|
9
|
+
require 'huck/generators/yaml'
|
10
|
+
require 'huck/generators/json'
|
9
11
|
require 'huck/sender'
|
10
12
|
require 'huck/senders/sqs'
|
11
13
|
require 'huck/receiver'
|
12
14
|
require 'huck/receivers/sqs'
|
13
15
|
require 'huck/handler'
|
16
|
+
require 'huck/handlers/echo'
|
14
17
|
require 'huck/handlers/exec'
|
15
18
|
|
16
19
|
module Huck
|
@@ -22,24 +25,23 @@ module Huck
|
|
22
25
|
# The name of the generator to use (default=facter)
|
23
26
|
#
|
24
27
|
def self.run kwargs = {}
|
25
|
-
|
28
|
+
conf_file = Huck::getarg kwargs, :config, nil
|
29
|
+
config = Huck::config :path => conf_file
|
30
|
+
|
26
31
|
if config.has_key? 'generator'
|
27
32
|
gen_name = config['generator']
|
28
33
|
end
|
29
|
-
|
30
34
|
gen_arg = Huck::getarg kwargs, :generator, nil
|
31
35
|
gen_name = gen_arg if !gen_arg.nil?
|
32
|
-
|
33
|
-
g = Generator::factory gen_name
|
36
|
+
g = Generator::factory :name => gen_name, :config => config
|
34
37
|
|
35
38
|
if config.has_key? 'sender'
|
36
39
|
send_name = config['sender']
|
37
40
|
end
|
38
|
-
|
39
41
|
send_arg = Huck::getarg kwargs, :sender, nil
|
40
42
|
send_name = send_arg if !send_arg.nil?
|
43
|
+
s = Sender::factory :name => send_name, :config => config
|
41
44
|
|
42
|
-
s = Sender::factory send_name
|
43
45
|
s.send g.dump
|
44
46
|
end
|
45
47
|
|
@@ -50,25 +52,29 @@ module Huck
|
|
50
52
|
# The receiver to use (default=sqs)
|
51
53
|
#
|
52
54
|
def self.serve kwargs = {}
|
53
|
-
|
55
|
+
conf_file = Huck::getarg kwargs, :config, nil
|
56
|
+
config = Huck::config :path => conf_file
|
57
|
+
|
54
58
|
if config.has_key? 'handler'
|
55
59
|
hand_name = config['handler']
|
56
60
|
end
|
57
|
-
|
58
61
|
hand_arg = Huck::getarg kwargs, :handler, nil
|
59
62
|
hand_name = hand_arg if !hand_arg.nil?
|
60
|
-
h = Handler::factory hand_name
|
63
|
+
h = Handler::factory :name => hand_name, :config => config
|
61
64
|
|
62
65
|
if config.has_key? 'receiver'
|
63
66
|
recv_name = config['receiver']
|
64
67
|
end
|
65
|
-
|
66
68
|
recv_arg = Huck::getarg kwargs, :receiver, nil
|
67
69
|
recv_name = recv_arg if !recv_arg.nil?
|
70
|
+
r = Receiver::factory :name => recv_name, :config => config
|
68
71
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
+
begin
|
73
|
+
r.receive do |msg|
|
74
|
+
h.handle msg
|
75
|
+
end
|
76
|
+
rescue Interrupt, SystemExit
|
77
|
+
return
|
72
78
|
end
|
73
79
|
end
|
74
80
|
|
data/lib/huck/generator.rb
CHANGED
@@ -2,6 +2,8 @@ module Huck
|
|
2
2
|
|
3
3
|
class Generator
|
4
4
|
|
5
|
+
attr_accessor :config
|
6
|
+
|
5
7
|
# This method will call the generation method, and return the data in the
|
6
8
|
# desired format.
|
7
9
|
def dump kwargs = {}
|
@@ -26,11 +28,16 @@ module Huck
|
|
26
28
|
# == Parameters:
|
27
29
|
# name::
|
28
30
|
# The name of the generator, or empty/nil to guess
|
31
|
+
# config::
|
32
|
+
# A configuration hash
|
29
33
|
#
|
30
34
|
# == Returns:
|
31
35
|
# A Huck::Generator instance
|
32
36
|
#
|
33
|
-
def self.factory
|
37
|
+
def self.factory kwargs = {}
|
38
|
+
name = Huck::getarg kwargs, :name, nil
|
39
|
+
config = Huck::getarg kwargs, :config, nil
|
40
|
+
|
34
41
|
if name.nil?
|
35
42
|
if Huck::try_load 'facter'
|
36
43
|
name = 'facter'
|
@@ -43,14 +50,19 @@ module Huck
|
|
43
50
|
|
44
51
|
case name
|
45
52
|
when 'facter'
|
46
|
-
|
53
|
+
g = Generators::FacterGenerator.new
|
47
54
|
when 'ohai'
|
48
|
-
|
55
|
+
g = Generators::OhaiGenerator.new
|
56
|
+
when 'yaml'
|
57
|
+
g = Generators::YamlGenerator.new
|
58
|
+
when 'json'
|
59
|
+
g = Generators::JsonGenerator.new
|
49
60
|
else
|
50
61
|
raise RuntimeError, "bad generator: #{name}"
|
51
62
|
end
|
52
63
|
|
53
|
-
|
64
|
+
g.config = config
|
65
|
+
return g
|
54
66
|
end
|
55
67
|
|
56
68
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Huck
|
2
|
+
|
3
|
+
module Generators
|
4
|
+
|
5
|
+
# JSON generator reads json files for data
|
6
|
+
class JsonGenerator < Generator
|
7
|
+
|
8
|
+
# Load required modules for json generator
|
9
|
+
def initialize
|
10
|
+
require 'json'
|
11
|
+
end
|
12
|
+
|
13
|
+
# Ensure that all JSON config items are properly set
|
14
|
+
def verify_config
|
15
|
+
if !@config.has_key? 'json'
|
16
|
+
raise RuntimeError, 'missing json config'
|
17
|
+
end
|
18
|
+
if !@config['json'].has_key? 'file'
|
19
|
+
raise RuntimeError, 'missing json config: file'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# Reads in a configured JSON file and returns the data
|
24
|
+
#
|
25
|
+
# == Returns:
|
26
|
+
# A hash of facts read from the JSON file
|
27
|
+
def generate
|
28
|
+
verify_config
|
29
|
+
JSON.load IO.read(@config['json']['file'])
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Huck
|
2
|
+
|
3
|
+
module Generators
|
4
|
+
|
5
|
+
# YAML generator reads yaml files for data
|
6
|
+
class YamlGenerator < Generator
|
7
|
+
|
8
|
+
# Load required modules for yaml generator
|
9
|
+
def initialize
|
10
|
+
require 'yaml'
|
11
|
+
end
|
12
|
+
|
13
|
+
# Ensure that all YAML config items are properly set
|
14
|
+
def verify_config
|
15
|
+
if !@config.has_key? 'yaml'
|
16
|
+
raise RuntimeError, 'missing yaml config'
|
17
|
+
end
|
18
|
+
if !@config['yaml'].has_key? 'file'
|
19
|
+
raise RuntimeError, 'missing yaml config: file'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# Reads in a configured YAML file and returns the data
|
24
|
+
#
|
25
|
+
# == Returns:
|
26
|
+
# A hash of facts read from the YAML file
|
27
|
+
def generate
|
28
|
+
verify_config
|
29
|
+
YAML.load_file @config['yaml']['file']
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/lib/huck/handler.rb
CHANGED
@@ -2,27 +2,36 @@ module Huck
|
|
2
2
|
|
3
3
|
# Base handler class
|
4
4
|
class Handler
|
5
|
+
attr_accessor :config
|
5
6
|
|
6
7
|
# Given a handler's name (or no name), return a new handler instance
|
7
8
|
#
|
8
9
|
# == Parameters:
|
9
10
|
# name::
|
10
11
|
# The name of the handler, or nil to guess
|
12
|
+
# config::
|
13
|
+
# A configuration hash
|
11
14
|
#
|
12
15
|
# == Returns:
|
13
16
|
# A Huck::Handler instance
|
14
17
|
#
|
15
|
-
def self.factory
|
16
|
-
name =
|
18
|
+
def self.factory kwargs = {}
|
19
|
+
name = Huck::getarg kwargs, :name, nil
|
20
|
+
config = Huck::getarg kwargs, :config, nil
|
21
|
+
|
22
|
+
name = 'echo' if name.nil?
|
17
23
|
|
18
24
|
case name
|
25
|
+
when 'echo'
|
26
|
+
h = Handlers::EchoHandler.new
|
19
27
|
when 'exec'
|
20
|
-
|
28
|
+
h = Handlers::ExecHandler.new
|
21
29
|
else
|
22
30
|
raise RuntimeError, "bad handler: #{name}"
|
23
31
|
end
|
24
32
|
|
25
|
-
|
33
|
+
h.config = config
|
34
|
+
return h
|
26
35
|
end
|
27
36
|
|
28
37
|
end
|
data/lib/huck/handlers/exec.rb
CHANGED
@@ -6,21 +6,17 @@ module Huck
|
|
6
6
|
# input on stdin.
|
7
7
|
class ExecHandler < Handler
|
8
8
|
|
9
|
+
# Includes all required modules
|
9
10
|
def initialize
|
10
11
|
require 'open3'
|
11
12
|
end
|
12
13
|
|
13
14
|
# Ensures that configuration is set properly before executing
|
14
|
-
|
15
|
-
|
16
|
-
# config::
|
17
|
-
# A hash of configuration data to verify
|
18
|
-
#
|
19
|
-
def verify_config config
|
20
|
-
if !config.has_key? 'exec'
|
15
|
+
def verify_config
|
16
|
+
if !@config.has_key? 'exec'
|
21
17
|
raise RuntimeError, 'missing exec config'
|
22
18
|
end
|
23
|
-
if
|
19
|
+
if !@config['exec'].has_key? 'command'
|
24
20
|
raise RuntimeError, 'missing exec config: command'
|
25
21
|
end
|
26
22
|
end
|
@@ -28,10 +24,9 @@ module Huck
|
|
28
24
|
# Handle an individual message by running an executable, passing in the
|
29
25
|
# gathered data via stdin.
|
30
26
|
def handle msg
|
31
|
-
|
32
|
-
verify_config config
|
27
|
+
verify_config
|
33
28
|
|
34
|
-
Open3.popen2 config['exec']['command'] do |stdin, stdout, thread|
|
29
|
+
Open3.popen2 @config['exec']['command'] do |stdin, stdout, thread|
|
35
30
|
stdin.print msg
|
36
31
|
end
|
37
32
|
end
|
data/lib/huck/receiver.rb
CHANGED
@@ -2,17 +2,23 @@ module Huck
|
|
2
2
|
|
3
3
|
# Base receiver class
|
4
4
|
class Receiver
|
5
|
+
attr_accessor :config
|
5
6
|
|
6
7
|
# Given a receiver's name (or no name), return a new receiver instance
|
7
8
|
#
|
8
9
|
# == Parameters:
|
9
10
|
# name::
|
10
11
|
# The name of the receiver, or nil to guess
|
12
|
+
# config::
|
13
|
+
# A configuration hash
|
11
14
|
#
|
12
15
|
# == Returns:
|
13
16
|
# A Huck::Receiver instance
|
14
17
|
#
|
15
|
-
def self.factory
|
18
|
+
def self.factory kwargs = {}
|
19
|
+
name = Huck::getarg kwargs, :name, nil
|
20
|
+
config = Huck::getarg kwargs, :config, nil
|
21
|
+
|
16
22
|
if name.nil?
|
17
23
|
if Huck::try_load 'aws-sdk'
|
18
24
|
name = 'sqs'
|
@@ -23,12 +29,13 @@ module Huck
|
|
23
29
|
|
24
30
|
case name
|
25
31
|
when 'sqs'
|
26
|
-
|
32
|
+
r = Receivers::SQSReceiver.new
|
27
33
|
else
|
28
34
|
raise RuntimeError, "bad receiver: #{name}"
|
29
35
|
end
|
30
36
|
|
31
|
-
|
37
|
+
r.config = config
|
38
|
+
return r
|
32
39
|
end
|
33
40
|
|
34
41
|
end
|
data/lib/huck/receivers/sqs.rb
CHANGED
@@ -12,18 +12,13 @@ module Huck
|
|
12
12
|
|
13
13
|
# Ensures that configuration is set properly before trying to use the
|
14
14
|
# connection data to talk to AWS
|
15
|
-
|
16
|
-
|
17
|
-
# config::
|
18
|
-
# A hash of configuration data to verify
|
19
|
-
#
|
20
|
-
def verify_config config
|
21
|
-
if !config.has_key? 'sqs'
|
15
|
+
def verify_config
|
16
|
+
if !@config.has_key? 'sqs'
|
22
17
|
raise RuntimeError, 'missing sqs config'
|
23
18
|
end
|
24
19
|
['access_key_id', 'secret_access_key', 'region',
|
25
20
|
'queue_name'].each do |key|
|
26
|
-
if
|
21
|
+
if !@config['sqs'].has_key? key
|
27
22
|
raise RuntimeError, "missing sqs config: #{key}"
|
28
23
|
end
|
29
24
|
end
|
@@ -32,16 +27,15 @@ module Huck
|
|
32
27
|
# A long-running poller process which reads messages out of the remote
|
33
28
|
# queue and yields them to higher-order logic.
|
34
29
|
def receive
|
35
|
-
|
36
|
-
verify_config config
|
30
|
+
verify_config
|
37
31
|
|
38
32
|
sqs = AWS::SQS.new(
|
39
|
-
:access_key_id => config['sqs']['access_key_id'],
|
40
|
-
:secret_access_key => config['sqs']['secret_access_key'],
|
41
|
-
:region => config['sqs']['region']
|
33
|
+
:access_key_id => @config['sqs']['access_key_id'],
|
34
|
+
:secret_access_key => @config['sqs']['secret_access_key'],
|
35
|
+
:region => @config['sqs']['region']
|
42
36
|
)
|
43
37
|
|
44
|
-
queue = sqs.queues.create config['sqs']['queue_name']
|
38
|
+
queue = sqs.queues.create @config['sqs']['queue_name']
|
45
39
|
queue.poll do |msg|
|
46
40
|
yield msg.body
|
47
41
|
end
|
data/lib/huck/sender.rb
CHANGED
@@ -2,17 +2,23 @@ module Huck
|
|
2
2
|
|
3
3
|
# The base sender class
|
4
4
|
class Sender
|
5
|
+
attr_accessor :config
|
5
6
|
|
6
7
|
# Given a sender's name (or no name), return a new sender instance
|
7
8
|
#
|
8
9
|
# == Parameters:
|
9
10
|
# name::
|
10
11
|
# The name of the sender, or nil to guess
|
12
|
+
# config::
|
13
|
+
# A configuration hash
|
11
14
|
#
|
12
15
|
# == Returns:
|
13
16
|
# A Huck::Sender instance
|
14
17
|
#
|
15
|
-
def self.factory
|
18
|
+
def self.factory kwargs = {}
|
19
|
+
name = Huck::getarg kwargs, :name, nil
|
20
|
+
config = Huck::getarg kwargs, :config, nil
|
21
|
+
|
16
22
|
if name.nil?
|
17
23
|
if Huck::try_load 'aws-sdk'
|
18
24
|
name = 'sqs'
|
@@ -23,12 +29,13 @@ module Huck
|
|
23
29
|
|
24
30
|
case name
|
25
31
|
when 'sqs'
|
26
|
-
|
32
|
+
s = Senders::SQSSender.new
|
27
33
|
else
|
28
34
|
raise RuntimeError, "bad sender: #{name}"
|
29
35
|
end
|
30
36
|
|
31
|
-
|
37
|
+
s.config = config
|
38
|
+
return s
|
32
39
|
end
|
33
40
|
|
34
41
|
end
|
data/lib/huck/senders/sqs.rb
CHANGED
@@ -12,18 +12,13 @@ module Huck
|
|
12
12
|
|
13
13
|
# Ensures that configuration is set properly before trying to use the
|
14
14
|
# connection data to talk to AWS
|
15
|
-
|
16
|
-
|
17
|
-
# config::
|
18
|
-
# A hash of configuration data to verify
|
19
|
-
#
|
20
|
-
def verify_config config
|
21
|
-
if !config.has_key? 'sqs'
|
15
|
+
def verify_config
|
16
|
+
if !@config.has_key? 'sqs'
|
22
17
|
raise RuntimeError, 'missing sqs sender config'
|
23
18
|
end
|
24
19
|
['access_key_id', 'secret_access_key', 'region',
|
25
20
|
'queue_name'].each do |key|
|
26
|
-
if
|
21
|
+
if !@config['sqs'].has_key? key
|
27
22
|
raise RuntimeError, "missing sqs sender config: #{key}"
|
28
23
|
end
|
29
24
|
end
|
@@ -36,16 +31,15 @@ module Huck
|
|
36
31
|
# The arbitrary text data to send
|
37
32
|
#
|
38
33
|
def send msg
|
39
|
-
|
40
|
-
verify_config config
|
34
|
+
verify_config
|
41
35
|
|
42
36
|
sqs = AWS::SQS.new(
|
43
|
-
:access_key_id => config['sqs']['access_key_id'],
|
44
|
-
:secret_access_key => config['sqs']['secret_access_key'],
|
45
|
-
:region => config['sqs']['region']
|
37
|
+
:access_key_id => @config['sqs']['access_key_id'],
|
38
|
+
:secret_access_key => @config['sqs']['secret_access_key'],
|
39
|
+
:region => @config['sqs']['region']
|
46
40
|
)
|
47
41
|
|
48
|
-
queue = sqs.queues.create config['sqs']['queue_name']
|
42
|
+
queue = sqs.queues.create @config['sqs']['queue_name']
|
49
43
|
queue.send_message msg
|
50
44
|
end
|
51
45
|
|
data/lib/huck/util.rb
CHANGED
@@ -27,7 +27,8 @@ module Huck
|
|
27
27
|
# A hash containing the configuration
|
28
28
|
#
|
29
29
|
def self.config kwargs = {}
|
30
|
-
path = self.getarg kwargs,
|
30
|
+
path = self.getarg kwargs, :path, nil
|
31
|
+
path = File.join(Dir.home, 'huck.conf') if path.nil?
|
31
32
|
YAML.load_file path
|
32
33
|
end
|
33
34
|
|
data/lib/huck/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: huck
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Uber
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -52,28 +52,17 @@ dependencies:
|
|
52
52
|
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: coveralls
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - '>='
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
55
|
description: Open-ended information sharing framework
|
70
56
|
email: ru@ryanuber.com
|
71
|
-
executables:
|
57
|
+
executables:
|
58
|
+
- huck
|
72
59
|
extensions: []
|
73
60
|
extra_rdoc_files: []
|
74
61
|
files:
|
75
62
|
- lib/huck/generators/ohai.rb
|
76
63
|
- lib/huck/generators/facter.rb
|
64
|
+
- lib/huck/generators/yaml.rb
|
65
|
+
- lib/huck/generators/json.rb
|
77
66
|
- lib/huck/senders/sqs.rb
|
78
67
|
- lib/huck/receiver.rb
|
79
68
|
- lib/huck/sender.rb
|
@@ -81,9 +70,12 @@ files:
|
|
81
70
|
- lib/huck/generator.rb
|
82
71
|
- lib/huck/receivers/sqs.rb
|
83
72
|
- lib/huck/handlers/exec.rb
|
73
|
+
- lib/huck/handlers/echo.rb
|
84
74
|
- lib/huck/version.rb
|
85
75
|
- lib/huck/handler.rb
|
86
76
|
- lib/huck.rb
|
77
|
+
- bin/huck
|
78
|
+
- spec/huck/huck_spec.rb
|
87
79
|
homepage: https://github.com/ryanuber/huck
|
88
80
|
licenses:
|
89
81
|
- MIT
|
@@ -108,4 +100,5 @@ rubygems_version: 2.1.11
|
|
108
100
|
signing_key:
|
109
101
|
specification_version: 4
|
110
102
|
summary: Information sharing framework
|
111
|
-
test_files:
|
103
|
+
test_files:
|
104
|
+
- spec/huck/huck_spec.rb
|