huck 0.2.0 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a73eb6afba2acf8dd3c721bb47af9255fbdb09aa
4
- data.tar.gz: e5967e01e75d5adeecbe7d06863cfea33d1c6241
3
+ metadata.gz: a79a3c9c263d302401491186d5ab0bd97a3ce51c
4
+ data.tar.gz: 600ea4d99d5c905796abbe425060e27e43cba421
5
5
  SHA512:
6
- metadata.gz: dbe365b4814a6050b0386e79a78dd2243ae062432484a92dcce2a92114e2fe663ebc1227513eba270835c407065f733771c0bff0854adbf2cf56394719074604
7
- data.tar.gz: 99b9c4a04a7b5513795f6f4cd9f1d74a3e4a8887e5d3b792b89e0e53990decdfcf5fff50ac9a79ad5ccaccf245bf8866a4dc1352913b642dccfefb4cb30e6c36
6
+ metadata.gz: d96f236417d31c5af714c20814cf95f3a11a8b266b68f8f879464218af21df3957fd3af53dab536079ff2865d023da3e9f6489f5b1525064c63569e82bb69379
7
+ data.tar.gz: ca82f5ca5ddd75d8c4a67e6cb45e9e059a01e9ad5055bcd4d562183889a81f02824e942c198f86e8de891a7c802fe53468c500450920c06e76a7e8bf76791533
@@ -4,6 +4,7 @@ require 'yaml'
4
4
  require 'huck/version'
5
5
  require 'huck/util'
6
6
  require 'huck/generator'
7
+ require 'huck/generators/basic'
7
8
  require 'huck/generators/facter'
8
9
  require 'huck/generators/ohai'
9
10
  require 'huck/generators/yaml'
@@ -21,8 +22,12 @@ module Huck
21
22
  # Main method to run Huck and dump info
22
23
  #
23
24
  # == Parameters:
25
+ # config::
26
+ # Configuration file path
24
27
  # generator::
25
- # The name of the generator to use (default=facter)
28
+ # The name of the generator to use
29
+ # sender::
30
+ # The name of the sender to use
26
31
  #
27
32
  def self.run kwargs = {}
28
33
  conf_file = Huck::getarg kwargs, :config, nil
@@ -6,6 +6,14 @@ module Huck
6
6
 
7
7
  # This method will call the generation method, and return the data in the
8
8
  # desired format.
9
+ #
10
+ # == Parameters:
11
+ # format::
12
+ # The serialization format (json or yaml)
13
+ #
14
+ # == Returns:
15
+ # A string of serialized text
16
+ #
9
17
  def dump kwargs = {}
10
18
  format = Huck::getarg kwargs, :format, 'json'
11
19
  data = generate
@@ -27,7 +35,7 @@ module Huck
27
35
  #
28
36
  # == Parameters:
29
37
  # name::
30
- # The name of the generator, or empty/nil to guess
38
+ # The name of the generator
31
39
  # config::
32
40
  # A configuration hash
33
41
  #
@@ -38,17 +46,11 @@ module Huck
38
46
  name = Huck::getarg kwargs, :name, nil
39
47
  config = Huck::getarg kwargs, :config, nil
40
48
 
41
- if name.nil?
42
- if Huck::try_load 'facter'
43
- name = 'facter'
44
- elsif Huck::try_load 'ohai'
45
- name = 'ohai'
46
- else
47
- raise RuntimeError, 'unable to load any generators'
48
- end
49
- end
49
+ name = 'basic' if name.nil?
50
50
 
51
51
  case name
52
+ when 'basic'
53
+ g = Generators::BasicGenerator.new
52
54
  when 'facter'
53
55
  g = Generators::FacterGenerator.new
54
56
  when 'ohai'
@@ -0,0 +1,25 @@
1
+ module Huck
2
+
3
+ module Generators
4
+
5
+ # A very basic host info generator
6
+ class BasicGenerator < Generator
7
+
8
+ # Include required modules
9
+ def initialize
10
+ Huck::must_load 'socket'
11
+ end
12
+
13
+ # Generates bare minimum useful information
14
+ #
15
+ # == Returns:
16
+ # A hash of host information
17
+ #
18
+ def generate
19
+ {'hostname' => Socket.gethostname,
20
+ 'platform' => RUBY_PLATFORM}
21
+ end
22
+
23
+ end
24
+ end
25
+ end
@@ -7,13 +7,14 @@ module Huck
7
7
 
8
8
  # Load required modules for facter generator
9
9
  def initialize
10
- require 'facter'
10
+ Huck::must_load 'facter'
11
11
  end
12
12
 
13
- # This method generates the data and returns it as a hash
13
+ # Generate data using facter
14
14
  #
15
15
  # == Returns:
16
16
  # A hash of facts as returned by facter
17
+ #
17
18
  def generate
18
19
  Facter.to_hash
19
20
  end
@@ -7,7 +7,7 @@ module Huck
7
7
 
8
8
  # Load required modules for json generator
9
9
  def initialize
10
- require 'json'
10
+ Huck::must_load 'json'
11
11
  end
12
12
 
13
13
  # Ensure that all JSON config items are properly set
@@ -24,6 +24,7 @@ module Huck
24
24
  #
25
25
  # == Returns:
26
26
  # A hash of facts read from the JSON file
27
+ #
27
28
  def generate
28
29
  verify_config
29
30
  JSON.load IO.read(@config['json']['file'])
@@ -7,13 +7,14 @@ module Huck
7
7
 
8
8
  # Load required modules for ohai generator
9
9
  def initialize
10
- require 'ohai/system'
10
+ Huck::must_load 'ohai/system'
11
11
  end
12
12
 
13
- # This method generates the data and returns it as a hash
13
+ # Generate data using ohai
14
14
  #
15
15
  # == Returns
16
16
  # A hash of hints as returned by ohai
17
+ #
17
18
  def generate
18
19
  ohai = Ohai::System.new
19
20
  ohai.all_plugins
@@ -7,7 +7,7 @@ module Huck
7
7
 
8
8
  # Load required modules for yaml generator
9
9
  def initialize
10
- require 'yaml'
10
+ Huck::must_load 'yaml'
11
11
  end
12
12
 
13
13
  # Ensure that all YAML config items are properly set
@@ -24,6 +24,7 @@ module Huck
24
24
  #
25
25
  # == Returns:
26
26
  # A hash of facts read from the YAML file
27
+ #
27
28
  def generate
28
29
  verify_config
29
30
  YAML.load_file @config['yaml']['file']
@@ -6,6 +6,11 @@ module Huck
6
6
  class EchoHandler < Handler
7
7
 
8
8
  # Handles a message by printing it
9
+ #
10
+ # == Parameters:
11
+ # msg::
12
+ # The message to process
13
+ #
9
14
  def handle msg
10
15
  puts msg
11
16
  end
@@ -8,7 +8,7 @@ module Huck
8
8
 
9
9
  # Includes all required modules
10
10
  def initialize
11
- require 'open3'
11
+ Huck::must_load 'open3'
12
12
  end
13
13
 
14
14
  # Ensures that configuration is set properly before executing
@@ -23,6 +23,11 @@ module Huck
23
23
 
24
24
  # Handle an individual message by running an executable, passing in the
25
25
  # gathered data via stdin.
26
+ #
27
+ # == Parameters:
28
+ # msg::
29
+ # The message to process
30
+ #
26
31
  def handle msg
27
32
  verify_config
28
33
 
@@ -7,7 +7,7 @@ module Huck
7
7
 
8
8
  # Includes all required modules for the SQS receiver
9
9
  def initialize
10
- require 'aws-sdk'
10
+ Huck::must_load 'aws-sdk'
11
11
  end
12
12
 
13
13
  # Ensures that configuration is set properly before trying to use the
@@ -7,7 +7,7 @@ module Huck
7
7
 
8
8
  # Includes all required modules for the SQS sender
9
9
  def initialize
10
- require 'aws-sdk'
10
+ Huck::must_load 'aws-sdk'
11
11
  end
12
12
 
13
13
  # Ensures that configuration is set properly before trying to use the
@@ -28,7 +28,7 @@ module Huck
28
28
  #
29
29
  # == Parameters:
30
30
  # msg::
31
- # The arbitrary text data to send
31
+ # The message to process
32
32
  #
33
33
  def send msg
34
34
  verify_config
@@ -50,4 +50,18 @@ module Huck
50
50
  true
51
51
  end
52
52
 
53
+ # Try to load a module, and raise a RuntimeError if it is not
54
+ # loadable. This is useful for trying to load certain provider
55
+ # code at runtime without dealing with LoadError.
56
+ #
57
+ # == Parameters:
58
+ # name::
59
+ # The name of the module
60
+ #
61
+ def self.must_load name
62
+ if !self.try_load name
63
+ raise RuntimeError, "unable to load #{name}"
64
+ end
65
+ end
66
+
53
67
  end
@@ -1,3 +1,3 @@
1
1
  module Huck
2
- Version = '0.2.0'
2
+ Version = '0.2.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: huck
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Uber
@@ -61,6 +61,7 @@ extra_rdoc_files: []
61
61
  files:
62
62
  - lib/huck/generators/ohai.rb
63
63
  - lib/huck/generators/facter.rb
64
+ - lib/huck/generators/basic.rb
64
65
  - lib/huck/generators/yaml.rb
65
66
  - lib/huck/generators/json.rb
66
67
  - lib/huck/senders/sqs.rb