haveapi-client 0.1.0 → 0.1.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: 411ee5aebf1042dcb0532fcfde75bb90a71a6a99
4
- data.tar.gz: 81323b4e42c302b2030b051308082dca268556a1
3
+ metadata.gz: 2450bb773a086b4732b000238a127e2b86bb3123
4
+ data.tar.gz: 5749b665304e4a2d40f4104189404a31a666c000
5
5
  SHA512:
6
- metadata.gz: 8fde9de9cdd152dca98d07b1f6fd74dbeb599c202a3031df0158b803e213047ee648b38077f8270c86d8b0bc0272a03e57c57a3a06354f5a0b44556c582ba613
7
- data.tar.gz: 4265a74df48c07c9dc3ae1a706f833cc2be1a9eb7be40fa54abedeb00808e1e588a98a1543d8da318c73dfe007dbf1bdd6d71f5d9dc64e46c806a67702ef8d5d
6
+ metadata.gz: 1b2ce5925416ee00884e332ef48b75a72830b09df905c3d32afabf811913bde41db355baf23faeb4061f63dd2ce006cc869a43081c3493bef1c39867ba103155
7
+ data.tar.gz: a703d0faed80a693d95906aae8d17030b7f135d41cbc16f9a0212d7c2db8c148968114d57ea1eeaa5e903497d6a20b68275ce8109da5b377eaa57521138751e4
@@ -19,12 +19,20 @@ module HaveAPI
19
19
  exit
20
20
  end
21
21
 
22
- if @opts[:help] || args.empty?
22
+ if (@opts[:help] && args.empty?) || args.empty?
23
23
  puts @global_opt.help
24
+ puts "\nAvailable resources:"
25
+ list_resources
24
26
  exit(true)
25
27
  end
26
28
 
27
29
  resources = args[0].split('.')
30
+
31
+ if args.count == 1
32
+ describe_resource(resources)
33
+ exit(true)
34
+ end
35
+
28
36
  action = translate_action(args[1].to_sym)
29
37
 
30
38
  action = @api.get_action(resources, action, args[2..-1])
@@ -78,12 +86,12 @@ module HaveAPI
78
86
  @action = [:list_versions]
79
87
  end
80
88
 
81
- opts.on('--list-resources VERSION', 'List all resource in API version') do |v|
82
- @action = [:list_resources, v.sub(/^v/, '')]
89
+ opts.on('--list-resources [VERSION]', 'List all resource in API version') do |v|
90
+ @action = [:list_resources, v && v.sub(/^v/, '')]
83
91
  end
84
92
 
85
- opts.on('--list-actions VERSION', 'List all resources and actions in API version') do |v|
86
- @action = [:list_actions, v.sub(/^v/, '')]
93
+ opts.on('--list-actions [VERSION]', 'List all resources and actions in API version') do |v|
94
+ @action = [:list_actions, v && v.sub(/^v/, '')]
87
95
  end
88
96
 
89
97
  opts.on('-r', '--raw', 'Print raw response as is') do
@@ -198,18 +206,49 @@ module HaveAPI
198
206
  end
199
207
  end
200
208
 
201
- def list_resources(v)
202
- @api.describe_api(v)[:resources].each do |resource, children|
209
+ def list_resources(v=nil)
210
+ desc = @api.describe_api
211
+
212
+ desc[:versions][v || desc[:default_version].to_s.to_sym][:resources].each do |resource, children|
203
213
  nested_resource(resource, children, false)
204
214
  end
205
215
  end
206
216
 
207
- def list_actions(v)
208
- @api.describe_api(v)[:resources].each do |resource, children|
217
+ def list_actions(v=nil)
218
+ desc = @api.describe_api
219
+
220
+ desc[:versions][v || desc[:default_version].to_s.to_sym][:resources].each do |resource, children|
209
221
  nested_resource(resource, children, true)
210
222
  end
211
223
  end
212
224
 
225
+ def describe_resource(path)
226
+ desc = @api.describe_resource(path)
227
+
228
+ unless desc
229
+ warn "Resource #{path.join('.')} does not exist"
230
+ exit(false)
231
+ end
232
+
233
+ unless desc[:resources].empty?
234
+ puts 'Resources:'
235
+
236
+ desc[:resources].each_key do |r|
237
+ puts " #{r}"
238
+ end
239
+ end
240
+
241
+ puts '' if !desc[:resources].empty? && !desc[:actions].empty?
242
+
243
+ unless desc[:actions].empty?
244
+ puts 'Actions:'
245
+
246
+ desc[:actions].each_key do |a|
247
+ puts " #{a}"
248
+ end
249
+ end
250
+ end
251
+
213
252
  def nested_resource(prefix, children, actions=false)
214
253
  if actions
215
254
  children[:actions].each do |action, _|
@@ -21,6 +21,19 @@ module HaveAPI
21
21
  description_for(path_for(v))
22
22
  end
23
23
 
24
+ def describe_resource(path)
25
+ api = describe_api
26
+ tmp = describe_api[:versions][ describe_api[:default_version].to_s.to_sym ]
27
+
28
+ path.each do |r|
29
+ tmp = tmp[:resources][r.to_sym]
30
+
31
+ return false unless tmp
32
+ end
33
+
34
+ tmp
35
+ end
36
+
24
37
  def describe_action(v, r)
25
38
 
26
39
  end
@@ -1,5 +1,5 @@
1
1
  module HaveAPI
2
2
  module Client
3
- VERSION = '0.1.0'
3
+ VERSION = '0.1.1'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: haveapi-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jakub Skokan