huck 0.3.4 → 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
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