usps-imis-api 0.12.4 → 0.12.5

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
  SHA256:
3
- metadata.gz: 460debbc45155c240ff211c34b38ca921889f221371c43bd85dfcb59fdd85691
4
- data.tar.gz: be08f0ad62da140e91bc5b53624cf0e9afa2c1ee8082f8cbcd60d9fe738fd8cf
3
+ metadata.gz: f3339b55eb073ceb6d09da8f6855a6b35181d9ba341968c19a029dc916e5f6da
4
+ data.tar.gz: 3366076637725838e3f4b404d2db28f349632681bb2211fb7cf1d3493965073f
5
5
  SHA512:
6
- metadata.gz: edbb4022d9d222a8b330618062af666a814c251022e28028ed7ba04616f1618cc7820186231cadc64cfaab83c73a9558fc81b71fac1da05f9ccace792a204916
7
- data.tar.gz: '083ce7fce5fb6172421c47f9807630c31c8250bb6d3b5bc212a486217999a4720dde89bdbb646adfd450bbf67d67176266346491a19ddfcf81fbd3a48a135edf'
6
+ metadata.gz: e5d137638ffabd6b8ecdf5a72ec2d3769ef511d0963f431d7fc9d34d5659d7a460e3c7e60acbc87532b04ca519e7ed2f5bfd38c30f50fc70ddcd97302a44066a
7
+ data.tar.gz: b9e980910b7507a39dec6ad2ca992ebbcf57227f119775bdfa972d58045a60d0b569137e3952c81aff16ed311ac2e49306b528800c4dca22e3c26f4a4fe2bc24
@@ -46,24 +46,28 @@ module Usps
46
46
 
47
47
  value = yield
48
48
 
49
+ puts format(value)
50
+ end
51
+ # :nocov:
52
+
53
+ def format(value)
49
54
  if value.is_a?(Array) && @options[:jsonl] then jsonl(value)
50
55
  elsif value.is_a?(Array) && @options[:csv] then csv(value)
51
- else raw(value)
56
+ else json(value)
52
57
  end
53
58
  end
54
59
 
55
- def raw(value) = puts(JSON.dump(value))
60
+ def json(value) = JSON.dump(value)
56
61
 
57
- def jsonl(value) = puts(value.map { JSON.dump(it) })
62
+ def jsonl(value) = value.map { JSON.dump(it) }
58
63
 
59
64
  def csv(value)
60
65
  headers = value.first.keys if value.first.is_a?(Hash) || value.first.is_a?(BaseData)
61
66
 
62
- puts(CSV.generate(headers:, write_headers: !headers.nil?) do |csv|
67
+ CSV.generate(headers:, write_headers: !headers.nil?) do |csv|
63
68
  headers ? value.each { csv << it } : csv << value
64
- end)
69
+ end
65
70
  end
66
- # :nocov:
67
71
  end
68
72
  end
69
73
  end
@@ -105,8 +105,6 @@ module Usps
105
105
 
106
106
  OptionsParser.options.each { |option, data| opt(option, *data) }
107
107
  CONFLICTING_OPTION_GROUPS.each { |group| conflicts(*group) }
108
-
109
- educate_on_error
110
108
  end
111
109
  end
112
110
 
@@ -116,10 +114,12 @@ module Usps
116
114
  # :nocov:
117
115
 
118
116
  def defaults?
119
- options_with_defaults = OptionsParser.options.select { |_, data| data[1]&.key?(:default) }
117
+ options_with_defaults = self.class.options.select { |_, data| data[1]&.key?(:default) }
118
+
119
+ default_options_not_given = options_with_defaults.none? { |option, _| @options[:"#{option}_given"] }
120
+ only_default_options_set = options.except(*options_with_defaults.keys).values.none?
120
121
 
121
- options_with_defaults.all? { |option, data| data[1].nil? || options[option] == data[1][:default] } &&
122
- options.except(*options_with_defaults.keys).values.none?
122
+ default_options_not_given && only_default_options_set
123
123
  end
124
124
 
125
125
  def pre_process_options!
@@ -129,6 +129,8 @@ module Usps
129
129
 
130
130
  @options[:data] = JSON.parse(@options[:data]) if @options[:data]
131
131
 
132
+ validate_query_options!
133
+
132
134
  raise Errors::CommandLineError, 'Maximum page size is 500' if @options[:page_size] > 500
133
135
 
134
136
  @options[:offset] = (@options[:page] - 1) * @options[:page_size] if @options[:page]
@@ -139,6 +141,13 @@ module Usps
139
141
  @options[:data] ||= {}
140
142
  @options[:data]['certificate'] = @options.delete(:certificate)
141
143
  end
144
+
145
+ def validate_query_options!
146
+ query_options = QUERY_FLAGS - [:query]
147
+ return unless !@options[:query] && query_options.any? { @options[:"#{it}_given"] }
148
+
149
+ Optimist.die(:query, "must be provided if any of --#{query_options.join(', --').gsub('_', '-')} are provided")
150
+ end
142
151
  end
143
152
  end
144
153
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Usps
4
4
  module Imis
5
- VERSION = '0.12.4'
5
+ VERSION = '0.12.5'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: usps-imis-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.4
4
+ version: 0.12.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julian Fiander