huck 0.3.4 → 0.3.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 25a756eec35292ca791c294071c7a845f8763a4b
4
- data.tar.gz: 0b865048d077ea23f3fb206200f829bb7244ea9e
3
+ metadata.gz: 7c1f883695019dd9a24f181b919f8597399c1bcc
4
+ data.tar.gz: ca393ed87a5bd06e94df9d5e7552f03c2d739a62
5
5
  SHA512:
6
- metadata.gz: 29b100df5fe489d1b392b8def0a347ef194e719ac457c2d04b916ee0265de0b9b90e0ce8a5a2bfec7d2f08b9f5a81ccdb712c490dd90f94686a3b7e612c670ba
7
- data.tar.gz: 16eae156c0519939642214cbc7db1add89b63289631e8e8a9edb00dc3fd9d2da04700f4c93439e01edc42cf3b6871121840def762f220f3f879d6740c17b1aef
6
+ metadata.gz: af8dd8725a19a799be254f72f709ac461b440790d94959e9597f5588890cd7f8bdf00a2c935ec8d1f644b30477837a1a8df42f065870ba6ab1dc3f361a9a116e
7
+ data.tar.gz: 6f5852b59881ccb7506208deb5d400cadf6d65f16889901cde89cfbdd926c74ac1cbadc19b6805e04dddef7bebf7ca2d846a63d1cebf5460e026f3ea6f0c18ba
@@ -3,12 +3,14 @@ require 'yaml'
3
3
 
4
4
  require 'huck/version'
5
5
  require 'huck/util'
6
+ require 'huck/error'
6
7
  require 'huck/generator'
7
8
  require 'huck/generators/basic'
8
9
  require 'huck/generators/facter'
9
10
  require 'huck/generators/ohai'
10
11
  require 'huck/generators/file'
11
12
  require 'huck/generators/exec'
13
+ require 'huck/generators/stdin'
12
14
  require 'huck/sender'
13
15
  require 'huck/senders/sqs'
14
16
  require 'huck/senders/rabbitmq'
@@ -57,7 +59,7 @@ module Huck
57
59
  generators.each do |g|
58
60
  data = block_given? ? yield : g.generate
59
61
  if !data.kind_of? String
60
- raise RuntimeError, "generator produced non-string result: #{data.class}"
62
+ raise Error, "generator produced non-string result: #{data.class}"
61
63
  end
62
64
  s.send data
63
65
  end
@@ -0,0 +1,6 @@
1
+ module Huck
2
+ # The Error class exists to help us catch our own errors versus errors thrown
3
+ # from Ruby's core or other modules.
4
+ class Error < StandardError
5
+ end
6
+ end
@@ -1,7 +1,6 @@
1
1
  module Huck
2
2
 
3
3
  class Generator
4
-
5
4
  attr_accessor :config
6
5
 
7
6
  # Given a generator's name (or no name), return a new generator instance
@@ -17,9 +16,9 @@ module Huck
17
16
  #
18
17
  def self.factory kwargs = {}
19
18
  name = Huck::getarg kwargs, :name, nil
20
- config = Huck::getarg kwargs, :config, nil
19
+ config = Huck::getarg kwargs, :config, {}
21
20
 
22
- name = 'basic' if name.nil?
21
+ name = 'stdin' if name.nil?
23
22
 
24
23
  case name
25
24
  when 'basic'
@@ -32,8 +31,10 @@ module Huck
32
31
  g = Generators::FileGenerator.new
33
32
  when 'exec'
34
33
  g = Generators::ExecGenerator.new
34
+ when 'stdin'
35
+ g = Generators::StdinGenerator.new
35
36
  else
36
- raise RuntimeError, "bad generator: #{name}"
37
+ raise Huck::Error, "bad generator: #{name}"
37
38
  end
38
39
 
39
40
  g.config = config
@@ -13,7 +13,7 @@ module Huck
13
13
  # Ensures that configuration is set properly before executing
14
14
  def verify_config
15
15
  if !@config.has_key? 'command'
16
- raise RuntimeError, 'missing "exec" generator config: "command"'
16
+ raise Huck::Error, 'missing "exec" generator config: "command"'
17
17
  end
18
18
  end
19
19
 
@@ -8,7 +8,7 @@ module Huck
8
8
  # Ensure that all JSON config items are properly set
9
9
  def verify_config
10
10
  if !@config.has_key? 'path'
11
- raise RuntimeError, 'missing "file" generator config: "path"'
11
+ raise Huck::Error, 'missing "file" generator config: "path"'
12
12
  end
13
13
  end
14
14
 
@@ -0,0 +1,27 @@
1
+ module Huck
2
+
3
+ module Generators
4
+
5
+ # A generator to use from the command line by piping in text
6
+ class StdinGenerator < Generator
7
+
8
+ # Submit all data from stdin.
9
+ def generate
10
+ data = ''
11
+
12
+ # Try reading 1 byte first in non-blocking mode. If the call would block
13
+ # during read(), then we just bail and raise. Otherwise, if at least 1
14
+ # byte can be read, we proceed to read until EOF since we already have
15
+ # our stream of data.
16
+ begin
17
+ data += STDIN.read_nonblock 1
18
+ rescue Errno::EWOULDBLOCK
19
+ raise Huck::Error, 'no data from stdin'
20
+ end
21
+ data += STDIN.read
22
+ data
23
+ end
24
+
25
+ end
26
+ end
27
+ end
@@ -17,7 +17,7 @@ module Huck
17
17
  #
18
18
  def self.factory kwargs = {}
19
19
  name = Huck::getarg kwargs, :name, nil
20
- config = Huck::getarg kwargs, :config, nil
20
+ config = Huck::getarg kwargs, :config, {}
21
21
 
22
22
  name = 'echo' if name.nil?
23
23
 
@@ -27,7 +27,7 @@ module Huck
27
27
  when 'exec'
28
28
  h = Handlers::ExecHandler.new
29
29
  else
30
- raise RuntimeError, "bad handler: #{name}"
30
+ raise Huck::Error, "bad handler: #{name}"
31
31
  end
32
32
 
33
33
  h.config = config
@@ -14,7 +14,7 @@ module Huck
14
14
  # Ensures that configuration is set properly before executing
15
15
  def verify_config
16
16
  if !@config.has_key? 'command'
17
- raise RuntimeError, 'missing "exec" generator config: "command"'
17
+ raise Huck::Error, 'missing "exec" generator config: "command"'
18
18
  end
19
19
  end
20
20
 
@@ -17,7 +17,7 @@ module Huck
17
17
  #
18
18
  def self.factory kwargs = {}
19
19
  name = Huck::getarg kwargs, :name, nil
20
- config = Huck::getarg kwargs, :config, nil
20
+ config = Huck::getarg kwargs, :config, {}
21
21
 
22
22
  name = 'sqs' if name.nil?
23
23
 
@@ -27,7 +27,7 @@ module Huck
27
27
  when 'rabbitmq'
28
28
  r = Receivers::RabbitMQReceiver.new
29
29
  else
30
- raise RuntimeError, "bad receiver: #{name}"
30
+ raise Huck::Error, "bad receiver: #{name}"
31
31
  end
32
32
 
33
33
  r.config = config
@@ -63,6 +63,8 @@ module Huck
63
63
  end
64
64
  rescue Interrupt, SystemExit
65
65
  return
66
+ rescue Huck::Error
67
+ raise
66
68
  rescue => e
67
69
  puts "Receiver error (#{self.class}): #{e.message}"
68
70
  puts "Retrying in 5s..."
@@ -14,10 +14,10 @@ module Huck
14
14
  # connection data to talk to RabbitMQ
15
15
  def verify_config
16
16
  if !@config.has_key? 'rabbitmq'
17
- raise RuntimeError, 'missing rabbitmq config'
17
+ raise Huck::Error, 'missing rabbitmq config'
18
18
  end
19
19
  if !@config['rabbitmq'].has_key? 'queue_name'
20
- raise RuntimeError, 'missing rabbitmq receiver config: queue_name'
20
+ raise Huck::Error, 'missing rabbitmq receiver config: queue_name'
21
21
  end
22
22
  end
23
23
 
@@ -14,12 +14,12 @@ module Huck
14
14
  # connection data to talk to AWS
15
15
  def verify_config
16
16
  if !@config.has_key? 'sqs'
17
- raise RuntimeError, 'missing sqs config'
17
+ raise Huck::Error, 'missing sqs config'
18
18
  end
19
19
  ['access_key_id', 'secret_access_key', 'region',
20
20
  'queue_name'].each do |key|
21
21
  if !@config['sqs'].has_key? key
22
- raise RuntimeError, "missing sqs config: #{key}"
22
+ raise Huck::Error, "missing sqs config: #{key}"
23
23
  end
24
24
  end
25
25
  end
@@ -17,7 +17,7 @@ module Huck
17
17
  #
18
18
  def self.factory kwargs = {}
19
19
  name = Huck::getarg kwargs, :name, nil
20
- config = Huck::getarg kwargs, :config, nil
20
+ config = Huck::getarg kwargs, :config, {}
21
21
 
22
22
  name = 'sqs' if name.nil?
23
23
 
@@ -27,7 +27,7 @@ module Huck
27
27
  when 'rabbitmq'
28
28
  s = Senders::RabbitMQSender.new
29
29
  else
30
- raise RuntimeError, "bad sender: #{name}"
30
+ raise Huck::Error, "bad sender: #{name}"
31
31
  end
32
32
 
33
33
  s.config = config
@@ -14,10 +14,10 @@ module Huck
14
14
  # connection data to talk to rabbitmq
15
15
  def verify_config
16
16
  if !@config.has_key? 'rabbitmq'
17
- raise RuntimeError, 'missing rabbitmq sender config'
17
+ raise Huck::Error, 'missing rabbitmq sender config'
18
18
  end
19
19
  if !@config['rabbitmq'].has_key? 'queue_name'
20
- raise RuntimeError, 'missing rabbitmq sender config: queue_name'
20
+ raise Huck::Error, 'missing rabbitmq sender config: queue_name'
21
21
  end
22
22
  end
23
23
 
@@ -16,10 +16,10 @@ module Huck
16
16
  # is set in the configuration.
17
17
  def verify_config
18
18
  if !@config.has_key? 'sqs'
19
- raise RuntimeError, 'missing sqs sender config'
19
+ raise Huck::Error, 'missing sqs sender config'
20
20
  end
21
21
  if !@config['sqs'].has_key? 'queue_name'
22
- raise RuntimeError, 'missing sqs sender config: queue_name'
22
+ raise Huck::Error, 'missing sqs sender config: queue_name'
23
23
  end
24
24
  end
25
25
 
@@ -50,7 +50,7 @@ module Huck
50
50
  true
51
51
  end
52
52
 
53
- # Try to load a module, and raise a RuntimeError if it is not
53
+ # Try to load a module, and raise a Huck::Error if it is not
54
54
  # loadable. This is useful for trying to load certain provider
55
55
  # code at runtime without dealing with LoadError.
56
56
  #
@@ -60,7 +60,7 @@ module Huck
60
60
  #
61
61
  def self.must_load name
62
62
  if !self.try_load name
63
- raise RuntimeError, "huck: unable to load #{name}"
63
+ raise Huck::Error, "huck: unable to load #{name}"
64
64
  end
65
65
  end
66
66
 
@@ -79,11 +79,11 @@ module Huck
79
79
 
80
80
  case format
81
81
  when 'json'
82
- return JSON.dump data
82
+ return JSON.generate data
83
83
  when 'yaml'
84
84
  return YAML.dump data
85
85
  else
86
- raise RuntimeError, "unknown format '#{format}'"
86
+ raise Huck::Error, "unknown format '#{format}'"
87
87
  end
88
88
  end
89
89
 
@@ -98,7 +98,7 @@ module Huck
98
98
  #
99
99
  def self.parse_providers data
100
100
  if !data.kind_of? Array
101
- raise RuntimeError, "expected array, got: #{data}"
101
+ raise Huck::Error, "expected array, got: #{data}"
102
102
  end
103
103
  data.each do |provider|
104
104
  config = Hash.new
@@ -108,7 +108,7 @@ module Huck
108
108
  elsif provider.kind_of? String
109
109
  name = provider
110
110
  else
111
- raise RuntimeError, "expected string or hash, got: #{provider}"
111
+ raise Huck::Error, "expected string or hash, got: #{provider}"
112
112
  end
113
113
  yield name, config
114
114
  end
@@ -1,3 +1,3 @@
1
1
  module Huck
2
- Version = '0.3.4'
2
+ Version = '0.3.5'
3
3
  end
@@ -31,8 +31,8 @@ describe 'Module Loading' do
31
31
  expect{Huck::must_load 'yaml'}.not_to raise_error
32
32
  end
33
33
 
34
- it 'should raise a RuntimeError when module cannot be loaded' do
35
- expect{Huck::must_load 'nonexistent'}.to raise_error(RuntimeError)
34
+ it 'should raise a Huck::Error when module cannot be loaded' do
35
+ expect{Huck::must_load 'nonexistent'}.to raise_error(Huck::Error)
36
36
  end
37
37
 
38
38
  end
@@ -41,7 +41,7 @@ describe 'Data Serialization' do
41
41
  input = {'a' => 'b'}
42
42
 
43
43
  it 'should serialize to json' do
44
- output = JSON.dump input
44
+ output = JSON.generate input
45
45
  expect(Huck::serialize(input, :format => 'json')).to eq(output)
46
46
  end
47
47
 
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.3.4
4
+ version: 0.3.5
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-19 00:00:00.000000000 Z
11
+ date: 2014-07-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -129,40 +129,42 @@ executables:
129
129
  extensions: []
130
130
  extra_rdoc_files: []
131
131
  files:
132
- - lib/huck/generators/ohai.rb
133
- - lib/huck/generators/facter.rb
132
+ - bin/huck
133
+ - lib/huck/error.rb
134
+ - lib/huck/generator.rb
134
135
  - lib/huck/generators/basic.rb
135
136
  - lib/huck/generators/exec.rb
137
+ - lib/huck/generators/facter.rb
136
138
  - lib/huck/generators/file.rb
137
- - lib/huck/senders/sqs.rb
138
- - lib/huck/senders/rabbitmq.rb
139
+ - lib/huck/generators/ohai.rb
140
+ - lib/huck/generators/stdin.rb
141
+ - lib/huck/handler.rb
142
+ - lib/huck/handlers/echo.rb
143
+ - lib/huck/handlers/exec.rb
139
144
  - lib/huck/receiver.rb
145
+ - lib/huck/receivers/rabbitmq.rb
146
+ - lib/huck/receivers/sqs.rb
140
147
  - lib/huck/sender.rb
148
+ - lib/huck/senders/rabbitmq.rb
149
+ - lib/huck/senders/sqs.rb
141
150
  - lib/huck/util.rb
142
- - lib/huck/generator.rb
143
- - lib/huck/receivers/sqs.rb
144
- - lib/huck/receivers/rabbitmq.rb
145
- - lib/huck/handlers/exec.rb
146
- - lib/huck/handlers/echo.rb
147
151
  - lib/huck/version.rb
148
- - lib/huck/handler.rb
149
152
  - lib/huck.rb
150
- - bin/huck
151
- - spec/huck/generators/facter_spec.rb
153
+ - spec/huck/generator_spec.rb
152
154
  - spec/huck/generators/basic_spec.rb
153
155
  - spec/huck/generators/exec_spec.rb
156
+ - spec/huck/generators/facter_spec.rb
154
157
  - spec/huck/generators/file_spec.rb
155
158
  - spec/huck/generators/ohai_spec.rb
156
- - spec/huck/util_spec.rb
157
- - spec/huck/receiver_spec.rb
158
- - spec/huck/senders/sqs_spec.rb
159
- - spec/huck/huck_spec.rb
160
- - spec/huck/sender_spec.rb
161
159
  - spec/huck/handler_spec.rb
162
- - spec/huck/receivers/sqs_spec.rb
163
- - spec/huck/generator_spec.rb
164
160
  - spec/huck/handlers/echo_spec.rb
165
161
  - spec/huck/handlers/exec_spec.rb
162
+ - spec/huck/huck_spec.rb
163
+ - spec/huck/receiver_spec.rb
164
+ - spec/huck/receivers/sqs_spec.rb
165
+ - spec/huck/sender_spec.rb
166
+ - spec/huck/senders/sqs_spec.rb
167
+ - spec/huck/util_spec.rb
166
168
  - spec/spec_helper.rb
167
169
  homepage: https://github.com/ryanuber/huck
168
170
  licenses:
@@ -184,24 +186,24 @@ required_rubygems_version: !ruby/object:Gem::Requirement
184
186
  version: '0'
185
187
  requirements: []
186
188
  rubyforge_project:
187
- rubygems_version: 2.1.11
189
+ rubygems_version: 2.0.14
188
190
  signing_key:
189
191
  specification_version: 4
190
192
  summary: Information sharing framework
191
193
  test_files:
192
- - spec/huck/generators/facter_spec.rb
194
+ - spec/huck/generator_spec.rb
193
195
  - spec/huck/generators/basic_spec.rb
194
196
  - spec/huck/generators/exec_spec.rb
197
+ - spec/huck/generators/facter_spec.rb
195
198
  - spec/huck/generators/file_spec.rb
196
199
  - spec/huck/generators/ohai_spec.rb
197
- - spec/huck/util_spec.rb
198
- - spec/huck/receiver_spec.rb
199
- - spec/huck/senders/sqs_spec.rb
200
- - spec/huck/huck_spec.rb
201
- - spec/huck/sender_spec.rb
202
200
  - spec/huck/handler_spec.rb
203
- - spec/huck/receivers/sqs_spec.rb
204
- - spec/huck/generator_spec.rb
205
201
  - spec/huck/handlers/echo_spec.rb
206
202
  - spec/huck/handlers/exec_spec.rb
203
+ - spec/huck/huck_spec.rb
204
+ - spec/huck/receiver_spec.rb
205
+ - spec/huck/receivers/sqs_spec.rb
206
+ - spec/huck/sender_spec.rb
207
+ - spec/huck/senders/sqs_spec.rb
208
+ - spec/huck/util_spec.rb
207
209
  - spec/spec_helper.rb