Class: Usps::Imis::CommandLine::Interface

Inherits:
Object
  • Object
show all
Includes:
Performers
Defined in:
lib/usps/imis/command_line/interface.rb

Overview

Command line interface for the Api

Constant Summary collapse

NAME =
'USPS iMIS API - Ruby'
RAW_HASH_RESPONSE_OPTIONS =

CLI options that indicate the response is a raw Hash rather than a Data object, and should not be simplified

%i[business_objects auth_token].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeInterface

A new instance of Interface

Parameters:

  • Options (**Hash)

    from the CLI options parser



38
39
40
41
42
43
44
45
# File 'lib/usps/imis/command_line/interface.rb', line 38

def initialize(**)
  @options = input_options.merge(**)
  options[:version] = true if default_options?

  configure! if options[:config]
  logging!
  @logger ||= Imis.logger('CommandLine')
end

Instance Attribute Details

#loggerObject (readonly)

Tagged logger



26
27
28
# File 'lib/usps/imis/command_line/interface.rb', line 26

def logger
  @logger
end

#optionsObject (readonly)

Options passed in from the command line



22
23
24
# File 'lib/usps/imis/command_line/interface.rb', line 22

def options
  @options
end

Class Method Details

.runObject

Initialize an Interface and run it with the provided options

Parameters:

  • Options (**Hash)

    from the CLI options parser



32
# File 'lib/usps/imis/command_line/interface.rb', line 32

def self.run(...) = new(...).run

Instance Method Details

#runObject

Run the configured action on the API



49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/usps/imis/command_line/interface.rb', line 49

def run
  logger.info 'Running'
  logger.debug 'CLI Options:'
  logger.json(options.dup.tap { it[:token] = '[FILTERED]' if it[:token] })

  set_member

  result = simplify(perform!)

  output { result }

  result
end