ugc 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ugc (0.0.5)
4
+ ugc (0.0.6)
5
5
  command_line_reporter
6
6
  gli (= 2.5.0)
7
7
  highline
data/README.md CHANGED
@@ -49,13 +49,22 @@ Connect to an Apigee administrator account:
49
49
 
50
50
  ## Release notes
51
51
 
52
+ ### 0.0.6
53
+ * New features
54
+ 1. Ruby eval of data in put and post commands
55
+ * eg. may now use "key: 'value'" for json instead of '{"key": "value"}'
56
+ 2. Added alias: 'show' for 'get'
57
+ 3. Made 'list' an alias of 'get' and updated get to include 'list' functionality
58
+ 4. smart column width for entities
59
+ 5. Added aliases 'create' and 'update' for 'post' and 'put' (yes, I am aware this isn't technically correct)
60
+
52
61
  ### 0.0.5
53
62
  * New features
54
- 1. smart column widths
55
- 1. add "limit" keyword to sql syntax
63
+ 1. smart column widths for collections
64
+ 2. add "limit" keyword to sql syntax
56
65
  * Bug fixes
57
66
  1. fixed issue with selecting a single column
58
- 1. fixed formatting of entities with heterogeneous attributes
67
+ 2. fixed formatting of entities with heterogeneous attributes
59
68
 
60
69
  ### 0.0.4
61
70
  * Bug fixes
@@ -1,4 +1,4 @@
1
- desc 'http delete'
1
+ desc 'delete an entity'
2
2
  arg_name 'url'
3
3
 
4
4
  command :delete do |c|
@@ -1,12 +1,50 @@
1
- desc 'http get'
2
- arg_name 'url'
1
+ desc 'retrieve a collection or entity'
3
2
 
4
- command :get do |c|
3
+ command :get,:show,:ls,:list do |c|
5
4
 
6
- c.action do |global_options,options,args|
7
- help_now! unless args[0]
5
+ c.desc 'url'
6
+ c.command [:url] do |c2|
8
7
 
9
- format_result resource(args[0]).get
8
+ c2.action do |global_options,options,args|
9
+ help_now! unless args[0]
10
+
11
+ format_result $application[args[0]].get
12
+ end
13
+ end
14
+
15
+ c.desc 'collections'
16
+ c.command [:collections] do |c2|
17
+
18
+ c2.action do |global_options,options,args|
19
+ app = $application.entity
20
+ collections = app['metadata']['collections']
21
+ table border: true do
22
+ row header: true do
23
+ collections.first[1].each_key do |k|
24
+ column k
25
+ end
26
+ end
27
+ collections.each_value do |coll|
28
+ row do
29
+ coll.each_value do |v|
30
+ column v
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
10
36
  end
11
37
 
38
+ default_names = %w(assets users events roles folders activities devices groups)
39
+ default_names.each do |e|
40
+ c.desc e
41
+ c.command [e.to_sym] do |c2|
42
+ c2.action do |global_options,options,args|
43
+ format_collection($application[e].collection)
44
+ end
45
+ end
46
+ end
47
+
48
+ c.default_command :url
49
+
12
50
  end
@@ -1,13 +1,13 @@
1
- desc 'http post'
1
+ desc 'non-idempotent create or update (usually create)'
2
2
  arg_name 'url [data]'
3
3
 
4
- command :post do |c|
4
+ command :post,:create do |c|
5
5
  c.flag [:d,:data]
6
6
 
7
7
  c.action do |global_options,options,args|
8
8
  help_now! unless args[0]
9
9
 
10
- format_result resource(args[0]).post (options[:data] || args[1])
10
+ format_result resource(args[0]).post parse_data(options[:data] || args[1])
11
11
  end
12
12
 
13
13
  end
@@ -1,13 +1,13 @@
1
- desc 'http put'
1
+ desc 'idempotent create or update (usually an update)'
2
2
  arg_name 'url [data]'
3
3
 
4
- command :put do |c|
4
+ command :put,:update do |c|
5
5
  c.flag [:d,:data]
6
6
 
7
7
  c.action do |global_options,options,args|
8
8
  help_now! unless args[0]
9
9
 
10
- format_result resource(args[0]).put (options[:data] || args[1])
10
+ format_result resource(args[0]).put parse_data(options[:data] || args[1])
11
11
  end
12
12
 
13
13
  end
@@ -41,10 +41,15 @@ end
41
41
 
42
42
  def format_entity(entity)
43
43
  if entity
44
+ name_cols = value_cols = 0
45
+ entity.data.reject{|k,v| SKIP_ATTRS.include? k}.each do |k,v|
46
+ name_cols = [name_cols, k.size].max
47
+ value_cols = [value_cols, v.to_s.size].max
48
+ end
44
49
  table border: true do
45
50
  row header: true do
46
- column 'name', width: 20
47
- column 'value', width: (terminal_columns - 28)
51
+ column 'name', width: [name_cols, 20].min
52
+ column 'value', width: [value_cols, HighLine.new.output_cols - 28].min
48
53
  end
49
54
  entity.data.reject{|k,v| SKIP_ATTRS.include? k}.each do |k,v|
50
55
  row do
@@ -1,3 +1,5 @@
1
+ require 'json'
2
+
1
3
  def parse_sql(query)
2
4
  result = {}
3
5
  keywords = %w(select from where limit)
@@ -20,3 +22,15 @@ def parse_sql(query)
20
22
  end
21
23
  result
22
24
  end
25
+
26
+ # returns a json string
27
+ def parse_data(input)
28
+ # must be wrapped in {}
29
+ input = "{#{input}}" unless input.start_with? '{'
30
+ # must be a json string or 1.9 hash format
31
+ begin
32
+ MultiJson.dump(eval(input))
33
+ rescue SyntaxError
34
+ input
35
+ end
36
+ end
data/lib/ugc/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ugc
2
- VERSION = '0.0.5'
2
+ VERSION = '0.0.6'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ugc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-03 00:00:00.000000000 Z
12
+ date: 2013-01-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -148,15 +148,14 @@ files:
148
148
  - lib/ugc/application.rb
149
149
  - lib/ugc/commands/delete.rb
150
150
  - lib/ugc/commands/get.rb
151
- - lib/ugc/commands/list.rb
152
151
  - lib/ugc/commands/login.rb
153
152
  - lib/ugc/commands/post.rb
154
153
  - lib/ugc/commands/profile.rb
155
154
  - lib/ugc/commands/put.rb
156
155
  - lib/ugc/commands/query.rb
157
156
  - lib/ugc/commands/target.rb
158
- - lib/ugc/helpers/formatters.rb
159
- - lib/ugc/helpers/sql.rb
157
+ - lib/ugc/helpers/format.rb
158
+ - lib/ugc/helpers/parse.rb
160
159
  - lib/ugc/helpers/uri.rb
161
160
  - lib/ugc/management.rb
162
161
  - lib/ugc/settings.rb
@@ -185,7 +184,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
185
184
  version: '0'
186
185
  segments:
187
186
  - 0
188
- hash: -192062484210983223
187
+ hash: -2161769601695807419
189
188
  required_rubygems_version: !ruby/object:Gem::Requirement
190
189
  none: false
191
190
  requirements:
@@ -194,7 +193,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
194
193
  version: '0'
195
194
  segments:
196
195
  - 0
197
- hash: -192062484210983223
196
+ hash: -2161769601695807419
198
197
  requirements: []
199
198
  rubyforge_project:
200
199
  rubygems_version: 1.8.24
@@ -1,49 +0,0 @@
1
- desc 'list'
2
- command :ls,:list do |c|
3
-
4
- c.desc 'collections'
5
- c.command [:collections] do |c2|
6
-
7
- c2.action do |global_options,options,args|
8
- app = $application.entity
9
- collections = app['metadata']['collections']
10
- table border: true do
11
- row header: true do
12
- collections.first[1].each_key do |k|
13
- column k
14
- end
15
- end
16
- collections.each_value do |coll|
17
- row do
18
- coll.each_value do |v|
19
- column v
20
- end
21
- end
22
- end
23
- end
24
- end
25
- end
26
-
27
- default_names = %w(assets users events roles folders activities devices groups)
28
- default_names.each do |e|
29
- c.desc e
30
- c.command [e.to_sym] do |c2|
31
- c2.action do |global_options,options,args|
32
- format_collection($application[e].collection)
33
- end
34
- end
35
- end
36
-
37
- c.desc 'whatevers'
38
- c.command [:whatevers] do |c2|
39
- c2.action do |global_options,options,args|
40
- help_now! unless args[0]
41
-
42
- whatevers = $application[args[0]].collection
43
- format_collection(whatevers)
44
- end
45
- end
46
-
47
- c.default_command :whatevers
48
-
49
- end