gazer 0.2.9 → 0.2.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9be1f366962bba0ba3b9ff09f8da55be6918e03f
4
- data.tar.gz: 031e2bbd695dc6f180f9de2287892f399da35023
3
+ metadata.gz: aee99a2281ea5f0a3fe6f8bb8dc25e0dc3d0ff96
4
+ data.tar.gz: e398cadd5f43339d815aef1f4ab232077e4203f8
5
5
  SHA512:
6
- metadata.gz: 51c76b2379314a222103a59e2f0797c0aa0fc4dbd9ad9f11b844fa46bdbbb40063329d241ba3dec982740928021c297d046ffb3948d9119a4e0a3dbab03a1c48
7
- data.tar.gz: 6fc85c7094d58a4bc3e54f1ac6d610a930d451689ff03f4cdc5e9cdb9eaa628e5cfc95668ef2ff4d8c80c3641dea92b0dfe1eeedffab9ddc3071c94eea44f57a
6
+ metadata.gz: 661520994b099375d67bae336f5d7da249c8c0c704f789da70030392db0eb4db28ee74d21f8a00f42edf89d4b89ab00c191e6561e13060fdedcf4a30871e0c5b
7
+ data.tar.gz: ce6d3808b51a5c9209385f7dbe3b36044d2cbff4c6a4f3f130a8a49856df9a41c7c6735f1ff98ddc0067ce3d14650711bb28204afc0a483f732ec89b22e328eb
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gazer (0.2.9)
4
+ gazer (0.2.10)
5
5
  looker-sdk (~> 0.0.6)
6
6
  netrc (~> 0.11.0)
7
7
  pastel (~> 0.7.2)
data/lib/gzr/cli.rb CHANGED
@@ -53,6 +53,9 @@ module Gzr
53
53
  end
54
54
  map %w(--version -v) => :version
55
55
 
56
+ require_relative 'commands/permissions'
57
+ register Gzr::Commands::Permissions, 'permissions', 'permissions [SUBCOMMAND]', 'Command to retrieve available permissions'
58
+
56
59
  require_relative 'commands/query'
57
60
  register Gzr::Commands::Query, 'query', 'query [SUBCOMMAND]', 'Commands to retrieve and run queries'
58
61
 
@@ -90,26 +90,30 @@ module Gzr
90
90
  end
91
91
 
92
92
  def sync_dashboard(source,target_space_id)
93
- existing_dashboard = search_dashboards_by_title(source[:title], target_space_id).fetch(0,nil)
94
93
  slug_used = search_dashboards_by_slug(source[:slug]).fetch(0,nil) if source[:slug]
94
+ title_used = search_dashboards_by_title(source[:title], target_space_id).fetch(0,nil)
95
+ existing_dashboard = search_dashboards_by_slug(source[:slug], target_space_id).fetch(0,nil) if source[:slug]
96
+ if existing_dashboard then
97
+ title_used = false if title_used.id == existing_dashboard.id
98
+ else
99
+ existing_dashboard = title_used
100
+ title_used = false
101
+ end
102
+ slug_used = false if existing_dashboard && slug_used && slug_used.id == existing_dashboard.id
95
103
 
96
104
  if slug_used then
97
- if existing_dashboard then
98
- if !(existing_dashboard.space_id == slug_used.space_id && existing_dashboard.title == slug_used.title) then
99
- say_warning "slug #{slug_used.slug} already used for dashboard #{slug_used.title} in space #{slug_used.space_id}"
100
- say_warning "dashboard will be imported with new slug"
101
- end
102
- else
103
- say_warning "slug #{slug_used.slug} already used for dashboard #{slug_used.title} in space #{slug_used.space_id}"
104
- say_warning "dashboard will be imported with new slug"
105
- end
105
+ say_warning "slug #{slug_used.slug} already used for dashboard #{slug_used.title} in space #{slug_used.space_id}"
106
+ say_warning "dashboard will be imported with new slug"
106
107
  end
107
108
 
108
109
  if existing_dashboard then
110
+ if title_used then
111
+ raise Gzr::CLI::Error, "Dashboard #{source[:title]} already exists in space #{target_space_id}\nDelete it before trying to upate another dashboard to have that title."
112
+ end
109
113
  if @options[:force] then
110
114
  say_ok "Modifying existing dashboard #{existing_dashboard.id} #{existing_dashboard[:title]} in space #{target_space_id}"
111
115
  new_dash = source.select do |k,v|
112
- (keys_to_keep('update_dashboard') - [:space_id,:user_id,:title,:slug]).include? k
116
+ (keys_to_keep('update_dashboard') - [:space_id,:user_id,:slug]).include? k
113
117
  end
114
118
  new_dash[:slug] = source[:slug] unless slug_used
115
119
  return update_dashboard(existing_dashboard.id,new_dash)
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'thor'
4
+
5
+ module Gzr
6
+ module Commands
7
+ class Permissions < Thor
8
+
9
+ namespace :permissions
10
+
11
+ desc 'ls', 'List all available permissions'
12
+ method_option :help, aliases: '-h', type: :boolean,
13
+ desc: 'Display usage information'
14
+ method_option :plain, type: :boolean, default: false,
15
+ desc: 'print without any extra formatting'
16
+ method_option :csv, type: :boolean, default: false,
17
+ desc: 'output in csv format per RFC4180'
18
+ def ls(*)
19
+ if options[:help]
20
+ invoke :help, ['ls']
21
+ else
22
+ require_relative 'permissions/ls'
23
+ Gzr::Commands::Permissions::Ls.new(options).execute
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,74 @@
1
+ # The MIT License (MIT)
2
+
3
+ # Copyright (c) 2018 Mike DeAngelo Looker Data Sciences, Inc.
4
+
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ # this software and associated documentation files (the "Software"), to deal in
7
+ # the Software without restriction, including without limitation the rights to
8
+ # use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ # the Software, and to permit persons to whom the Software is furnished to do so,
10
+ # subject to the following conditions:
11
+
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+ # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ # frozen_string_literal: true
23
+
24
+ require_relative '../../command'
25
+ require_relative '../../modules/permissions'
26
+ require 'tty-table'
27
+
28
+ require_relative '../../command'
29
+
30
+ module Gzr
31
+ module Commands
32
+ class Permissions
33
+ class Ls < Gzr::Command
34
+ include Gzr::Permissions
35
+ def initialize(options)
36
+ super()
37
+ @options = options
38
+ end
39
+
40
+ def execute(input: $stdin, output: $stdout)
41
+ say_warning(@options) if @options[:debug]
42
+ with_session do
43
+ data = query_all_permissions()
44
+ begin
45
+ say_ok "No permissions found"
46
+ return nil
47
+ end unless data && data.length > 0
48
+
49
+ table_hash = Hash.new
50
+ fields = field_names('permission,parent,description')
51
+ table_hash[:header] = fields unless @options[:plain]
52
+ expressions = fields.collect { |fn| field_expression(fn) }
53
+ table_hash[:rows] = data.map do |row|
54
+ expressions.collect do |e|
55
+ eval "row.#{e}"
56
+ end
57
+ end
58
+ table = TTY::Table.new(table_hash)
59
+ alignments = fields.collect do |k|
60
+ (k =~ /id$/) ? :right : :left
61
+ end
62
+ begin
63
+ if @options[:csv] then
64
+ output.puts render_csv(table)
65
+ else
66
+ output.puts table.render(if @options[:plain] then :basic else :ascii end, alignments: alignments, width: 1024)
67
+ end
68
+ end if table
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
@@ -53,6 +53,18 @@ module Gzr
53
53
  end
54
54
  end
55
55
 
56
+ desc 'delete USER_ID', 'Delete the user given by user_id'
57
+ method_option :help, aliases: '-h', type: :boolean,
58
+ desc: 'Display usage information'
59
+ def delete(user_id)
60
+ if options[:help]
61
+ invoke :help, ['delete']
62
+ else
63
+ require_relative 'user/delete'
64
+ Gzr::Commands::User::Delete.new(user_id,options).execute
65
+ end
66
+ end
67
+
56
68
  desc 'cat USER_ID', 'Output json information about a user to screen or file'
57
69
  method_option :help, aliases: '-h', type: :boolean,
58
70
  desc: 'Display usage information'
@@ -0,0 +1,47 @@
1
+ # The MIT License (MIT)
2
+
3
+ # Copyright (c) 2018 Mike DeAngelo Looker Data Sciences, Inc.
4
+
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ # this software and associated documentation files (the "Software"), to deal in
7
+ # the Software without restriction, including without limitation the rights to
8
+ # use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ # the Software, and to permit persons to whom the Software is furnished to do so,
10
+ # subject to the following conditions:
11
+
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+ # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ # frozen_string_literal: true
23
+
24
+ require_relative '../../command'
25
+ require_relative '../../modules/user'
26
+
27
+ module Gzr
28
+ module Commands
29
+ class User
30
+ class Delete < Gzr::Command
31
+ include Gzr::User
32
+ def initialize(user_id,options)
33
+ super()
34
+ @user_id = user_id
35
+ @options = options
36
+ end
37
+
38
+ def execute(input: $stdin, output: $stdout)
39
+ say_warning(@options) if @options[:debug]
40
+ with_session do
41
+ data = delete_user(@user_id)
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,41 @@
1
+ # The MIT License (MIT)
2
+
3
+ # Copyright (c) 2018 Mike DeAngelo Looker Data Sciences, Inc.
4
+
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ # this software and associated documentation files (the "Software"), to deal in
7
+ # the Software without restriction, including without limitation the rights to
8
+ # use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ # the Software, and to permit persons to whom the Software is furnished to do so,
10
+ # subject to the following conditions:
11
+
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+ # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ # frozen_string_literal: true
23
+
24
+ module Gzr
25
+ module Permissions
26
+
27
+ def query_all_permissions()
28
+ data = nil
29
+ begin
30
+ data = @sdk.all_permissions()
31
+ rescue LookerSDK::Error => e
32
+ say_error "Error querying all_permissions()"
33
+ say_error e.message
34
+ raise
35
+ end
36
+ data
37
+ end
38
+
39
+ end
40
+ end
41
+
@@ -110,5 +110,18 @@ module Gzr
110
110
  end
111
111
  data
112
112
  end
113
+
114
+ def delete_user(id)
115
+ data = nil
116
+ req = id
117
+ begin
118
+ data = @sdk.delete_user(req)
119
+ rescue LookerSDK::Error => e
120
+ say_error "Error deleting user(#{id},#{JSON.pretty_generate(req)})"
121
+ say_error e.message
122
+ raise
123
+ end
124
+ data
125
+ end
113
126
  end
114
127
  end
data/lib/gzr/version.rb CHANGED
@@ -20,5 +20,5 @@
20
20
  # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
21
 
22
22
  module Gzr
23
- VERSION = "0.2.9"
23
+ VERSION = "0.2.10"
24
24
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gazer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.9
4
+ version: 0.2.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike DeAngelo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-01-30 00:00:00.000000000 Z
11
+ date: 2019-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tty-reader
@@ -207,6 +207,8 @@ files:
207
207
  - lib/gzr/commands/look/rm.rb
208
208
  - lib/gzr/commands/model.rb
209
209
  - lib/gzr/commands/model/ls.rb
210
+ - lib/gzr/commands/permissions.rb
211
+ - lib/gzr/commands/permissions/ls.rb
210
212
  - lib/gzr/commands/plan.rb
211
213
  - lib/gzr/commands/plan/cat.rb
212
214
  - lib/gzr/commands/plan/disable.rb
@@ -239,6 +241,7 @@ files:
239
241
  - lib/gzr/commands/subcommandbase.rb
240
242
  - lib/gzr/commands/user.rb
241
243
  - lib/gzr/commands/user/cat.rb
244
+ - lib/gzr/commands/user/delete.rb
242
245
  - lib/gzr/commands/user/disable.rb
243
246
  - lib/gzr/commands/user/enable.rb
244
247
  - lib/gzr/commands/user/ls.rb
@@ -249,6 +252,7 @@ files:
249
252
  - lib/gzr/modules/group.rb
250
253
  - lib/gzr/modules/look.rb
251
254
  - lib/gzr/modules/model.rb
255
+ - lib/gzr/modules/permissions.rb
252
256
  - lib/gzr/modules/plan.rb
253
257
  - lib/gzr/modules/role.rb
254
258
  - lib/gzr/modules/session.rb
@@ -267,6 +271,7 @@ files:
267
271
  - lib/gzr/templates/look/import/.gitkeep
268
272
  - lib/gzr/templates/look/rm/.gitkeep
269
273
  - lib/gzr/templates/model/ls/.gitkeep
274
+ - lib/gzr/templates/permissions/ls/.gitkeep
270
275
  - lib/gzr/templates/plan/cat/.gitkeep
271
276
  - lib/gzr/templates/plan/disable/.gitkeep
272
277
  - lib/gzr/templates/plan/enable/.gitkeep