hammer_cli 0.0.5 → 0.0.6

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.md CHANGED
@@ -69,9 +69,10 @@ Confirm your setup by running ```$ hammer -h``` and see if the desired commands
69
69
  You will also most likely want to change the url of the Foreman server.
70
70
 
71
71
  ```yaml
72
- :host: 'https://localhost/'
73
- :username: 'admin'
74
- :password: 'changeme'
72
+ :foreman:
73
+ :host: 'https://localhost/'
74
+ :username: 'admin'
75
+ :password: 'changeme'
75
76
  ```
76
77
 
77
78
  Done. Your hammer client is configured and ready to use.
data/bin/hammer CHANGED
@@ -46,9 +46,9 @@ end
46
46
  require 'hammer_cli'
47
47
 
48
48
  # load modules set in config
49
- modules = HammerCLI::Settings[:modules] || []
50
- modules.each do |m|
51
- require m
49
+ modules = HammerCLI::Settings.get(:modules) || []
50
+ modules.each do |m|
51
+ require m
52
52
  logger.info "Extension module #{m} loaded"
53
53
  end
54
54
 
@@ -2,9 +2,10 @@
2
2
  # - hammer_cli_foreman
3
3
  # - hammer_cli_katello_bridge
4
4
 
5
- :host: 'https://localhost/'
6
- :username: 'admin'
7
- :password: 'changeme'
5
+ :foreman:
6
+ :host: 'https://localhost/'
7
+ :username: 'admin'
8
+ :password: 'changeme'
8
9
 
9
10
  # :watch_plain: true disables color output of logger.watch in Clamp commands
10
11
  :watch_plain: false
@@ -15,6 +15,10 @@ module HammerCLI
15
15
  attr_accessor :validation_block
16
16
  end
17
17
 
18
+ def adapter
19
+ :base
20
+ end
21
+
18
22
  def run(arguments)
19
23
  exit_code = super
20
24
  raise "exit code must be integer" unless exit_code.is_a? Integer
@@ -45,12 +49,8 @@ module HammerCLI
45
49
  validator.run &self.class.validation_block if self.class.validation_block
46
50
  end
47
51
 
48
- def output
49
- @output ||= HammerCLI::Output::Output.new(:context => context)
50
- end
51
-
52
52
  def exception_handler
53
- @exception_handler ||= exception_handler_class.new :output => output
53
+ @exception_handler ||= exception_handler_class.new(:context=>context, :adapter=>adapter)
54
54
  end
55
55
 
56
56
  def initialize(*args)
@@ -85,6 +85,15 @@ module HammerCLI
85
85
 
86
86
  protected
87
87
 
88
+ def print_records(definition, records)
89
+ HammerCLI::Output::Output.print_records(definition, records, context,
90
+ :adapter => adapter)
91
+ end
92
+
93
+ def print_message(msg)
94
+ HammerCLI::Output::Output.print_message(msg, context, :adapter=>adapter)
95
+ end
96
+
88
97
  def logger(name=self.class)
89
98
  logger = Logging.logger[name]
90
99
  logger.extend(HammerCLI::Logger::Watch) if not logger.respond_to? :watch
@@ -21,10 +21,6 @@ module HammerCLI::Apipie
21
21
  @output_definition
22
22
  end
23
23
 
24
- def output
25
- @output ||= HammerCLI::Output::Output.new :definition => output_definition
26
- end
27
-
28
24
  def execute
29
25
  d = retrieve_data
30
26
  logger.watch "Retrieved data: ", d
@@ -39,7 +35,7 @@ module HammerCLI::Apipie
39
35
  end
40
36
 
41
37
  def print_data(records)
42
- output.print_records(records)
38
+ print_records(output_definition, records)
43
39
  end
44
40
 
45
41
  def request_params
@@ -66,9 +66,9 @@ module HammerCLI::Apipie
66
66
 
67
67
  def resource_config
68
68
  config = {}
69
- config[:base_url] = HammerCLI::Settings[:host]
70
- config[:username] = context[:username] || HammerCLI::Settings[:username] || ENV['FOREMAN_USERNAME']
71
- config[:password] = context[:password] || HammerCLI::Settings[:password] || ENV['FOREMAN_PASSWORD']
69
+ config[:base_url] = HammerCLI::Settings.get(:foreman, :host)
70
+ config[:username] = context[:username] || ENV['FOREMAN_USERNAME'] || HammerCLI::Settings.get(:foreman, :username)
71
+ config[:password] = context[:password] || ENV['FOREMAN_PASSWORD'] || HammerCLI::Settings.get(:foreman, :password)
72
72
  config
73
73
  end
74
74
 
@@ -8,15 +8,15 @@ module HammerCLI::Apipie
8
8
 
9
9
  def execute
10
10
  send_request
11
- print_message
11
+ print_success_message
12
12
  return HammerCLI::EX_OK
13
13
  end
14
14
 
15
15
  protected
16
16
 
17
- def print_message
17
+ def print_success_message
18
18
  msg = success_message
19
- output.print_message msg unless msg.nil?
19
+ print_message(msg) unless msg.nil?
20
20
  end
21
21
 
22
22
  def send_request
@@ -5,8 +5,9 @@ module HammerCLI
5
5
  class ExceptionHandler
6
6
 
7
7
  def initialize(options={})
8
- @output = options[:output] or raise "Missing option output"
9
8
  @logger = Logging.logger['Exception']
9
+ @context = options[:context] || {}
10
+ @adapter = options[:adapter] || :base
10
11
  end
11
12
 
12
13
  def mappings
@@ -31,9 +32,9 @@ module HammerCLI
31
32
  @logger.error error
32
33
 
33
34
  if @options[:heading]
34
- @output.print_error @options[:heading], error
35
+ HammerCLI::Output::Output.print_error @options[:heading], error, @context, :adapter => @adapter
35
36
  else
36
- @output.print_error error
37
+ HammerCLI::Output::Output.print_error error, nil, @context, :adapter => @adapter
37
38
  end
38
39
  end
39
40
 
@@ -21,7 +21,7 @@ module HammerCLI
21
21
  NOCOLOR_LAYOUT = Logging::Layouts::Pattern.new(:pattern => pattern, :color_scheme => nil)
22
22
  DEFAULT_LOG_DIR = '/var/log/foreman'
23
23
 
24
- log_dir = File.expand_path(HammerCLI::Settings[:log_dir] || DEFAULT_LOG_DIR)
24
+ log_dir = File.expand_path(HammerCLI::Settings.get(:log_dir) || DEFAULT_LOG_DIR)
25
25
  begin
26
26
  FileUtils.mkdir_p(log_dir, :mode => 0750)
27
27
  rescue Errno::EACCES => e
@@ -36,15 +36,15 @@ module HammerCLI
36
36
  :layout => NOCOLOR_LAYOUT,
37
37
  :truncate => false,
38
38
  :keep => 5,
39
- :size => HammerCLI::Settings[:log_size] || 1024*1024) # 1MB
39
+ :size => HammerCLI::Settings.get(:log_size) || 1024*1024) # 1MB
40
40
  # set owner and group (it's ignored if attribute is nil)
41
- FileUtils.chown HammerCLI::Settings[:log_owner], HammerCLI::Settings[:log_group], filename
41
+ FileUtils.chown HammerCLI::Settings.get(:log_owner), HammerCLI::Settings.get(:log_group), filename
42
42
  rescue ArgumentError => e
43
43
  puts "File #{filename} not writeable, won't log anything to file!"
44
44
  end
45
45
 
46
- logger.level = HammerCLI::Settings[:log_level]
46
+ logger.level = HammerCLI::Settings.get(:log_level)
47
47
 
48
- end
48
+ end
49
49
 
50
50
  end
@@ -5,7 +5,7 @@ module HammerCLI
5
5
  module Watch
6
6
  def watch(label, obj, options={})
7
7
  if debug?
8
- options = { :plain => HammerCLI::Settings[:watch_plain], :indent => -2 }.merge(options)
8
+ options = { :plain => HammerCLI::Settings.get(:watch_plain), :indent => -2 }.merge(options)
9
9
  debug label + "\n" + obj.ai(options)
10
10
  end
11
11
  end
@@ -17,6 +17,11 @@ module HammerCLI
17
17
 
18
18
  option ["--show-ids"], :flag, "Show ids of associated resources"
19
19
 
20
+ option ["--csv"], :flag, "Output as CSV (same as --adapter=csv)"
21
+ option ["--output"], "ADAPTER", "Set output format. One of [%s]" %
22
+ HammerCLI::Output::Output.adapters.keys.join(', ')
23
+ option ["--csv-separator"], "SEPARATOR", "Character to separate the values"
24
+
20
25
  option ["-P", "--ask-pass"], :flag, "Ask for password" do
21
26
  context[:password] = get_password()
22
27
  ''
@@ -34,12 +39,30 @@ module HammerCLI
34
39
  context[:show_ids] = show_ids
35
40
  end
36
41
 
37
- def password=(password)
38
- context[:password] = password.nil? ? ENV['FOREMAN_PASSWORD'] : password
42
+ def run(*args)
43
+ super
44
+ end
45
+
46
+ def password=(p)
47
+ @password = p
48
+ context[:password] = p
39
49
  end
40
50
 
41
- def username=(username)
42
- context[:username] = username.nil? ? ENV['FOREMAN_USERNAME'] : username
51
+ def csv=(csv)
52
+ context[:adapter] = :csv
53
+ end
54
+
55
+ def csv_separator=(separator)
56
+ context[:csv_separator] = separator
57
+ end
58
+
59
+ def output=(adapter)
60
+ context[:adapter] = adapter
61
+ end
62
+
63
+ def username=(u)
64
+ @username = u
65
+ context[:username] = u
43
66
  end
44
67
 
45
68
  private
@@ -48,8 +71,6 @@ module HammerCLI
48
71
  ask(prompt) {|q| q.echo = false}
49
72
  end
50
73
 
51
-
52
-
53
74
  end
54
75
 
55
76
  end
@@ -1,11 +1,14 @@
1
-
2
1
  module HammerCLI::Output::Adapter
3
2
 
4
3
  class Abstract
5
4
 
6
- def initialize(context={}, formatters=HammerCLI::Output::Formatters::FormatterLibrary.new)
5
+ def tags
6
+ []
7
+ end
8
+
9
+ def initialize(context={}, formatters={})
7
10
  @context = context
8
- @formatters = formatters
11
+ @formatters = HammerCLI::Output::Formatters::FormatterLibrary.new(filter_formatters(formatters))
9
12
  end
10
13
 
11
14
  def print_message(msg)
@@ -28,5 +31,18 @@ module HammerCLI::Output::Adapter
28
31
  raise NotImplementedError
29
32
  end
30
33
 
34
+ private
35
+
36
+ def filter_formatters(formatters_map)
37
+ formatters_map ||= {}
38
+ formatters_map.inject({}) do |map, (type, formatter_list)|
39
+ # remove incompatible formatters
40
+ filtered = formatter_list.select { |f| f.match?(tags) }
41
+ # put serializers first
42
+ map[type] = filtered.sort_by { |f| f.tags.include?(:flat) ? 0 : 1 }
43
+ map
44
+ end
45
+ end
46
+
31
47
  end
32
48
  end
@@ -4,6 +4,10 @@ module HammerCLI::Output::Adapter
4
4
  GROUP_INDENT = " "*2
5
5
  LABEL_DIVIDER = ": "
6
6
 
7
+ def tags
8
+ [:flat, :screen]
9
+ end
10
+
7
11
  def print_records(fields, data)
8
12
  self.fields = fields
9
13
 
@@ -117,4 +121,6 @@ module HammerCLI::Output::Adapter
117
121
  attr_accessor :fields
118
122
 
119
123
  end
124
+
125
+ HammerCLI::Output::Output.register_adapter(:base, Base)
120
126
  end
@@ -0,0 +1,43 @@
1
+ require 'csv'
2
+ if CSV.const_defined? :Reader
3
+ # Ruby 1.8 compatible
4
+ require 'fastercsv'
5
+ Object.send(:remove_const, :CSV)
6
+ CSV = FasterCSV
7
+ else
8
+ # CSV is now FasterCSV in ruby 1.9
9
+ end
10
+
11
+ module HammerCLI::Output::Adapter
12
+
13
+ class CSValues < Abstract
14
+
15
+ def tags
16
+ [:flat]
17
+ end
18
+
19
+ def print_records(fields, data)
20
+ csv_string = CSV.generate(
21
+ :col_sep => @context[:csv_separator] || ',',
22
+ :encoding => 'utf-8') do |csv|
23
+ # labels
24
+ csv << fields.select{ |f| !(f.class <= Fields::Id) || @context[:show_ids] }.map { |f| f.label }
25
+ # data
26
+ data.each do |d|
27
+ csv << fields.inject([]) do |row, f|
28
+ unless f.class <= Fields::Id && !@context[:show_ids]
29
+ value = (f.get_value(d) || '')
30
+ formatter = @formatters.formatter_for_type(f.class)
31
+ row << (formatter ? formatter.format(value) : value)
32
+ end
33
+ row
34
+ end
35
+ end
36
+ end
37
+ puts csv_string
38
+ end
39
+ end
40
+
41
+ HammerCLI::Output::Output.register_adapter(:csv, CSValues)
42
+
43
+ end
@@ -1,7 +1,7 @@
1
1
 
2
2
  module HammerCLI::Output::Adapter
3
3
 
4
- class Silent
4
+ class Silent < Abstract
5
5
 
6
6
  def print_message(msg)
7
7
  end
@@ -14,4 +14,6 @@ module HammerCLI::Output::Adapter
14
14
 
15
15
  end
16
16
 
17
+ HammerCLI::Output::Output.register_adapter(:silent, Silent)
18
+
17
19
  end
@@ -4,6 +4,10 @@ module HammerCLI::Output::Adapter
4
4
 
5
5
  class Table < Abstract
6
6
 
7
+ def tags
8
+ [:screen, :flat]
9
+ end
10
+
7
11
  def print_records(fields, data)
8
12
 
9
13
  rows = data.collect do |d|
@@ -37,4 +41,6 @@ module HammerCLI::Output::Adapter
37
41
 
38
42
  end
39
43
 
44
+ HammerCLI::Output::Output.register_adapter(:table, Table)
45
+
40
46
  end
@@ -2,5 +2,6 @@ require File.join(File.dirname(__FILE__), 'adapter/abstract')
2
2
  require File.join(File.dirname(__FILE__), 'adapter/base')
3
3
  require File.join(File.dirname(__FILE__), 'adapter/table')
4
4
  require File.join(File.dirname(__FILE__), 'adapter/silent')
5
+ require File.join(File.dirname(__FILE__), 'adapter/csv')
5
6
 
6
7
 
@@ -4,9 +4,10 @@ module HammerCLI::Output
4
4
  # Registry for formatters
5
5
  class FormatterLibrary
6
6
  def initialize(formatter_map={})
7
+
7
8
  @_formatters = {}
8
9
  formatter_map.each do |type, formatters|
9
- register_formatter(type, formatters)
10
+ register_formatter(type, *Array(formatters))
10
11
  end
11
12
  end
12
13
 
@@ -23,8 +24,25 @@ module HammerCLI::Output
23
24
  end
24
25
  end
25
26
 
27
+ # Tags:
28
+ # All the tags the formatter has, needs to be present in the addapter.
29
+ # Otherwise the formatter won't apply. Formatters with :flat tag are used first
30
+ # as we expect them to serialize the value.
31
+ #
32
+ # - by format: :flat x :data
33
+ # - by output: :file X :screen
34
+
26
35
  # abstract formatter
27
36
  class FieldFormatter
37
+
38
+ def tags
39
+ []
40
+ end
41
+
42
+ def match?(other_tags)
43
+ tags & other_tags == tags
44
+ end
45
+
28
46
  def format(data)
29
47
  data
30
48
  end
@@ -51,12 +69,21 @@ module HammerCLI::Output
51
69
  @color = color
52
70
  end
53
71
 
72
+ def tags
73
+ [:screen, :flat]
74
+ end
75
+
54
76
  def format(data)
55
77
  c = HighLine.color(data.to_s, @color)
56
78
  end
57
79
  end
58
80
 
59
81
  class DateFormatter < FieldFormatter
82
+
83
+ def tags
84
+ [:flat]
85
+ end
86
+
60
87
  def format(string_date)
61
88
  t = DateTime.parse(string_date.to_s)
62
89
  t.strftime("%Y/%m/%d %H:%M:%S")
@@ -66,14 +93,18 @@ module HammerCLI::Output
66
93
  end
67
94
 
68
95
  class ListFormatter < FieldFormatter
96
+
97
+ def tags
98
+ [:flat]
99
+ end
100
+
69
101
  def format(list)
70
102
  list.join(", ") if list
71
103
  end
72
104
  end
73
105
 
74
- DEFAULT_FORMATTERS = FormatterLibrary.new(
75
- :Date => DateFormatter.new,
76
- :List => ListFormatter.new)
106
+ HammerCLI::Output::Output.register_formatter(DateFormatter.new, :Date)
107
+ HammerCLI::Output::Output.register_formatter(ListFormatter.new, :List)
77
108
 
78
109
  end
79
110
  end
@@ -1,28 +1,60 @@
1
1
  module HammerCLI::Output
2
2
  class Output
3
3
 
4
- attr_accessor :adapter
5
- attr_reader :definition
4
+ def self.print_message(msg, context, options={})
5
+ adapter(options[:adapter], context).print_message(msg.to_s)
6
+ end
6
7
 
7
- def initialize(options={})
8
- @context = options[:context] || {}
9
- @adapter = options[:adapter] || HammerCLI::Output::Adapter::Base.new(
10
- @context, HammerCLI::Output::Formatters::DEFAULT_FORMATTERS)
11
- @definition = options[:definition] || HammerCLI::Output::Definition.new
8
+ def self.print_error(msg, details=nil, context={}, options={})
9
+ adapter(options[:adapter], context).print_error(msg.to_s, details)
12
10
  end
13
11
 
14
- def print_message(msg)
15
- adapter.print_message(msg.to_s)
12
+ def self.print_records(definition, records, context, options={})
13
+ adapter(options[:adapter], context).print_records(definition.fields, [records].flatten(1))
16
14
  end
17
15
 
18
- def print_error(msg, details=nil)
19
- adapter.print_error(msg.to_s, details)
16
+ def self.adapter(req_adapter, context)
17
+ if context[:adapter]
18
+ adapter_name = context[:adapter].to_sym
19
+ else
20
+ adapter_name = req_adapter
21
+ end
22
+
23
+ begin
24
+ init_adapter(adapter_name, context)
25
+ rescue NameError
26
+ Logging.logger[self.name].warn("Required adapter '#{adapter_name}' was not found, using 'base' instead")
27
+ init_adapter(:base, context)
28
+ end
20
29
  end
21
30
 
22
- def print_records(records)
23
- records = [records] unless records.kind_of?(Array)
31
+ def self.adapters
32
+ @adapters_hash ||= {}
33
+ @adapters_hash
34
+ end
35
+
36
+ def self.formatters
37
+ @formatters_hash ||= {}
38
+ @formatters_hash
39
+ end
40
+
41
+ def self.register_adapter(name, adapter_class)
42
+ adapters[name] = adapter_class
43
+ end
44
+
45
+ def self.register_formatter(formatter, *field_types)
46
+ field_types.each do |type|
47
+ formatter_list = formatters[type] || []
48
+ formatter_list << formatter
49
+ formatters[type] = formatter_list
50
+ end
51
+ end
24
52
 
25
- adapter.print_records(definition.fields, records)
53
+ private
54
+
55
+ def self.init_adapter(adapter_name, context)
56
+ raise NameError unless adapters.has_key? adapter_name
57
+ adapters[adapter_name].new(context, formatters)
26
58
  end
27
59
 
28
60
  end
@@ -5,8 +5,11 @@ module HammerCLI
5
5
 
6
6
  class Settings
7
7
 
8
- def self.[](key)
9
- settings[key.to_sym]
8
+ def self.get(*keys)
9
+ keys.inject(settings) do |value, key|
10
+ return nil unless value
11
+ value[key.to_sym]
12
+ end
10
13
  end
11
14
 
12
15
  def self.load_from_file(files)
@@ -23,7 +26,7 @@ module HammerCLI
23
26
  end
24
27
 
25
28
  def self.load(settings_hash)
26
- settings.merge! settings_hash.inject({}){ |sym_hash,(k,v)| sym_hash[k.to_sym] = v; sym_hash }
29
+ deep_merge!(settings, settings_hash)
27
30
  end
28
31
 
29
32
  def self.clear
@@ -42,6 +45,21 @@ module HammerCLI
42
45
  @settings_hash
43
46
  end
44
47
 
48
+ def self.deep_merge!(h, other_h)
49
+ other_h = symbolize_hash(other_h)
50
+
51
+ h.merge!(other_h) do |key, old_val, new_val|
52
+ if old_val.is_a? Hash and new_val.is_a? Hash
53
+ deep_merge!(old_val, new_val)
54
+ else
55
+ new_val
56
+ end
57
+ end
58
+ end
59
+
60
+ def self.symbolize_hash(h)
61
+ h = h.inject({}) { |sym_hash,(k,v)| sym_hash.update(k.to_sym => v) }
62
+ end
45
63
  end
46
64
 
47
65
 
@@ -1,5 +1,5 @@
1
1
  module HammerCLI
2
2
  def self.version
3
- @version ||= Gem::Version.new '0.0.5'
3
+ @version ||= Gem::Version.new '0.0.6'
4
4
  end
5
5
  end
data/lib/hammer_cli.rb CHANGED
@@ -2,10 +2,10 @@ require 'hammer_cli/version'
2
2
  require 'hammer_cli/exit_codes'
3
3
  require 'hammer_cli/settings'
4
4
  require 'hammer_cli/validator'
5
+ require 'hammer_cli/output'
5
6
  require 'hammer_cli/abstract'
6
7
  require 'hammer_cli/main'
7
8
 
8
- require 'hammer_cli/output'
9
9
  require 'hammer_cli/apipie'
10
10
 
11
11
  # extend MainCommand
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hammer_cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Martin Bačovský
@@ -9,94 +10,107 @@ authors:
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2013-09-26 00:00:00.000000000 Z
13
+ date: 2013-10-08 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: clamp
16
17
  requirement: !ruby/object:Gem::Requirement
18
+ none: false
17
19
  requirements:
18
- - - '>='
20
+ - - ! '>='
19
21
  - !ruby/object:Gem::Version
20
22
  version: '0'
21
23
  type: :runtime
22
24
  prerelease: false
23
25
  version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
24
27
  requirements:
25
- - - '>='
28
+ - - ! '>='
26
29
  - !ruby/object:Gem::Version
27
30
  version: '0'
28
31
  - !ruby/object:Gem::Dependency
29
32
  name: rest-client
30
33
  requirement: !ruby/object:Gem::Requirement
34
+ none: false
31
35
  requirements:
32
- - - '>='
36
+ - - ! '>='
33
37
  - !ruby/object:Gem::Version
34
38
  version: '0'
35
39
  type: :runtime
36
40
  prerelease: false
37
41
  version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
38
43
  requirements:
39
- - - '>='
44
+ - - ! '>='
40
45
  - !ruby/object:Gem::Version
41
46
  version: '0'
42
47
  - !ruby/object:Gem::Dependency
43
48
  name: logging
44
49
  requirement: !ruby/object:Gem::Requirement
50
+ none: false
45
51
  requirements:
46
- - - '>='
52
+ - - ! '>='
47
53
  - !ruby/object:Gem::Version
48
54
  version: '0'
49
55
  type: :runtime
50
56
  prerelease: false
51
57
  version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
52
59
  requirements:
53
- - - '>='
60
+ - - ! '>='
54
61
  - !ruby/object:Gem::Version
55
62
  version: '0'
56
63
  - !ruby/object:Gem::Dependency
57
64
  name: awesome_print
58
65
  requirement: !ruby/object:Gem::Requirement
66
+ none: false
59
67
  requirements:
60
- - - '>='
68
+ - - ! '>='
61
69
  - !ruby/object:Gem::Version
62
70
  version: '0'
63
71
  type: :runtime
64
72
  prerelease: false
65
73
  version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
66
75
  requirements:
67
- - - '>='
76
+ - - ! '>='
68
77
  - !ruby/object:Gem::Version
69
78
  version: '0'
70
79
  - !ruby/object:Gem::Dependency
71
80
  name: table_print
72
81
  requirement: !ruby/object:Gem::Requirement
82
+ none: false
73
83
  requirements:
74
- - - '>='
84
+ - - ! '>='
75
85
  - !ruby/object:Gem::Version
76
86
  version: '0'
77
87
  type: :runtime
78
88
  prerelease: false
79
89
  version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
80
91
  requirements:
81
- - - '>='
92
+ - - ! '>='
82
93
  - !ruby/object:Gem::Version
83
94
  version: '0'
84
95
  - !ruby/object:Gem::Dependency
85
96
  name: highline
86
97
  requirement: !ruby/object:Gem::Requirement
98
+ none: false
87
99
  requirements:
88
- - - '>='
100
+ - - ! '>='
89
101
  - !ruby/object:Gem::Version
90
102
  version: '0'
91
103
  type: :runtime
92
104
  prerelease: false
93
105
  version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
94
107
  requirements:
95
- - - '>='
108
+ - - ! '>='
96
109
  - !ruby/object:Gem::Version
97
110
  version: '0'
98
- description: |
99
- Hammer cli provides universal extendable CLI interface for ruby apps
111
+ description: ! 'Hammer cli provides universal extendable CLI interface for ruby apps
112
+
113
+ '
100
114
  email: mbacovsk@redhat.com
101
115
  executables:
102
116
  - hammer
@@ -106,69 +120,72 @@ extra_rdoc_files:
106
120
  - LICENSE
107
121
  - hammer_cli_complete
108
122
  - config/cli_config.template.yml
109
- - doc/design.uml
110
123
  - doc/design.png
124
+ - doc/design.uml
111
125
  files:
112
- - lib/hammer_cli/output.rb
113
- - lib/hammer_cli/option_formatters.rb
114
- - lib/hammer_cli/abstract.rb
115
- - lib/hammer_cli/apipie/write_command.rb
116
- - lib/hammer_cli/apipie/command.rb
117
- - lib/hammer_cli/apipie/options.rb
118
- - lib/hammer_cli/apipie/read_command.rb
119
- - lib/hammer_cli/apipie/resource.rb
120
- - lib/hammer_cli/apipie.rb
121
- - lib/hammer_cli/autocompletion.rb
122
- - lib/hammer_cli/validator.rb
123
- - lib/hammer_cli/exit_codes.rb
124
- - lib/hammer_cli/version.rb
125
- - lib/hammer_cli/logger_watch.rb
126
- - lib/hammer_cli/main.rb
127
- - lib/hammer_cli/settings.rb
128
- - lib/hammer_cli/output/output.rb
126
+ - lib/hammer_cli.rb
127
+ - lib/hammer_cli/messages.rb
128
+ - lib/hammer_cli/output/fields.rb
129
129
  - lib/hammer_cli/output/formatters.rb
130
- - lib/hammer_cli/output/adapter/abstract.rb
131
130
  - lib/hammer_cli/output/adapter/table.rb
132
131
  - lib/hammer_cli/output/adapter/base.rb
132
+ - lib/hammer_cli/output/adapter/abstract.rb
133
133
  - lib/hammer_cli/output/adapter/silent.rb
134
- - lib/hammer_cli/output/dsl.rb
134
+ - lib/hammer_cli/output/adapter/csv.rb
135
135
  - lib/hammer_cli/output/adapter.rb
136
+ - lib/hammer_cli/output/output.rb
137
+ - lib/hammer_cli/output/dsl.rb
136
138
  - lib/hammer_cli/output/definition.rb
137
- - lib/hammer_cli/output/fields.rb
139
+ - lib/hammer_cli/abstract.rb
140
+ - lib/hammer_cli/shell.rb
141
+ - lib/hammer_cli/autocompletion.rb
142
+ - lib/hammer_cli/logger_watch.rb
138
143
  - lib/hammer_cli/logger.rb
144
+ - lib/hammer_cli/apipie.rb
145
+ - lib/hammer_cli/apipie/command.rb
146
+ - lib/hammer_cli/apipie/options.rb
147
+ - lib/hammer_cli/apipie/resource.rb
148
+ - lib/hammer_cli/apipie/write_command.rb
149
+ - lib/hammer_cli/apipie/read_command.rb
150
+ - lib/hammer_cli/validator.rb
151
+ - lib/hammer_cli/version.rb
152
+ - lib/hammer_cli/exit_codes.rb
153
+ - lib/hammer_cli/output.rb
139
154
  - lib/hammer_cli/exception_handler.rb
140
- - lib/hammer_cli/messages.rb
141
- - lib/hammer_cli/shell.rb
142
- - lib/hammer_cli.rb
155
+ - lib/hammer_cli/main.rb
156
+ - lib/hammer_cli/option_formatters.rb
157
+ - lib/hammer_cli/settings.rb
143
158
  - bin/hammer
144
159
  - README.md
145
160
  - LICENSE
146
161
  - hammer_cli_complete
147
162
  - config/cli_config.template.yml
148
- - doc/design.uml
149
163
  - doc/design.png
164
+ - doc/design.uml
150
165
  homepage: http://github.com/theforeman/hammer-cli
151
166
  licenses:
152
167
  - GPL-3
153
- metadata: {}
154
168
  post_install_message:
155
169
  rdoc_options: []
156
170
  require_paths:
157
171
  - lib
158
172
  required_ruby_version: !ruby/object:Gem::Requirement
173
+ none: false
159
174
  requirements:
160
- - - '>='
175
+ - - ! '>='
161
176
  - !ruby/object:Gem::Version
162
177
  version: '0'
163
178
  required_rubygems_version: !ruby/object:Gem::Requirement
179
+ none: false
164
180
  requirements:
165
- - - '>='
181
+ - - ! '>='
166
182
  - !ruby/object:Gem::Version
167
183
  version: '0'
168
184
  requirements: []
169
185
  rubyforge_project:
170
- rubygems_version: 2.0.3
186
+ rubygems_version: 1.8.24
171
187
  signing_key:
172
- specification_version: 4
188
+ specification_version: 3
173
189
  summary: Universal command-line interface
174
190
  test_files: []
191
+ has_rdoc:
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: cec260aec7ea81ebce48b8efe53cd738f8e63266
4
- data.tar.gz: 1aa5bb89e0dc87783b4bd093a2b8dffb58ac9616
5
- SHA512:
6
- metadata.gz: 0ea5172e0d0b8d3fdb743a3f26d3cf1a5ad351360b607f1a4343b7a09303b8d77c9c417106027a5163f49ac4382a158f31cdf23501d47d230594e44d92fa3e47
7
- data.tar.gz: 6637eb0f497677b719636ac5b91c12e5ac3da1b96b68e95b49f36831a0d69ed7e355ada97dbd79d4b0ff9b08b4765f725a25fe8e9e934238522b3de7065729cf