Class: HammerCLI::Options::Normalizers::JSONInput

Inherits:
File show all
Defined in:
lib/hammer_cli/options/normalizers.rb

Instance Method Summary collapse

Methods inherited from File

common_description, #complete, completion_type

Methods inherited from AbstractNormalizer

common_description, #complete, completion_type, #completion_type, #description, inherited

Instance Method Details

#format(val) ⇒ Object



294
295
296
297
298
299
300
301
302
303
304
305
# File 'lib/hammer_cli/options/normalizers.rb', line 294

def format(val)
  # The JSON input can be either the path to a file whose contents are
  # JSON or a JSON string.  For example:
  #   /my/path/to/file.json
  # or
  #   '{ "units":[ { "name":"zip", "version":"9.0", "inclusion":"false" } ] }')
  json_string = ::File.exist?(::File.expand_path(val)) ? super(val) : val
  ::JSON.parse(json_string)

rescue ::JSON::ParserError => e
  raise ArgumentError, _("Unable to parse JSON input.")
end