gazer 0.2.15 → 0.2.16

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: 4f1519e5c9690bd1028b3f899c281502a5d7746c
4
- data.tar.gz: 673d9a3e988c95521fedf378ee276834d4d8345d
3
+ metadata.gz: c1e108603b48eccf755e49bb74db4f1d3a8095c0
4
+ data.tar.gz: c5df7d93f59e9231880904bfa1bcbce1400153e1
5
5
  SHA512:
6
- metadata.gz: d4fd5dc05483d6cfd4e38bfb5cfa2b12b808db121ae8dc83855caeb29c40f58fbf232b94c7d26ed413864acde333224d540f33fb5100e3cba9ae56157c42a55f
7
- data.tar.gz: fc06b562eecf5daf51072c253dba790459dab3aecf9531969a4993fdfc2ba688894d87ce4684f40f00abbe75a2eaf1ad9e92ff150a3cd5d4fd8e0d933bf2defb
6
+ metadata.gz: 2d22b564ba4fd7ef8f0f98b33fdb0b6d522a77448f7de44e01ec90631c378da4c1f8dedc8df7b509e8bf07fde139ed9470b82be37f14886da9f7f392c4541ae2
7
+ data.tar.gz: b9d39d2ce886949c42f5681c23fe795fdce14c211aad94fb3e5ed34f95458eab4a475dfb5082e0725137e17aa77df3ad3775ac0324f28f8332aaae5d4753571d
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gazer (0.2.15)
4
+ gazer (0.2.16)
5
5
  looker-sdk (~> 0.0.6)
6
6
  netrc (~> 0.11.0)
7
7
  pastel (~> 0.7.2)
@@ -46,14 +46,14 @@ module Gzr
46
46
  end
47
47
 
48
48
  def execute(input: $stdin, output: $stdout)
49
- say_warning("options: #{@options.inspect}") if @options[:debug]
49
+ say_warning("options: #{@options.inspect}", output) if @options[:debug]
50
50
  with_session("3.1") do
51
51
 
52
52
  @me ||= query_me("id")
53
53
 
54
54
  read_file(@file) do |data|
55
55
 
56
- dashboard = sync_dashboard(data,@dest_space_id)
56
+ dashboard = sync_dashboard(data,@dest_space_id, output: output)
57
57
 
58
58
  source_filters = data[:dashboard_filters].sort { |a,b| a[:row] <=> b[:row] }
59
59
  existing_filters = dashboard.dashboard_filters.sort { |a,b| a.row <=> b.row }
@@ -67,7 +67,7 @@ module Gzr
67
67
  end
68
68
  end
69
69
  pairs(source_filters,existing_filters,dashboard.id) do |source,target,id|
70
- say_warning "Synching dashboard filter for dashboard #{id}" if @options[:debug]
70
+ say_warning("Synching dashboard filter for dashboard #{id}", output: output) if @options[:debug]
71
71
  sync_dashboard_filter(source,target,id)
72
72
  end
73
73
 
@@ -89,11 +89,11 @@ module Gzr
89
89
  end
90
90
  end
91
91
 
92
- def sync_dashboard(source,target_space_id)
92
+ def sync_dashboard(source, target_space_id, output: $stdout)
93
93
  # try to find dashboard by slug in target space
94
94
  existing_dashboard = search_dashboards_by_slug(source[:slug], target_space_id).fetch(0,nil) if source[:slug]
95
95
  # check for dash of same title in target space
96
- title_used = search_dashboards_by_title(source[:title], target_space_id).fetch(0,nil)
96
+ title_used = search_dashboards_by_title(source[:title], target_space_id).select {|d| !d[:deleted] }.fetch(0,nil)
97
97
 
98
98
  # If there is no match by slug in target space or no slug given, then we match by title
99
99
  existing_dashboard ||= title_used
@@ -110,24 +110,24 @@ module Gzr
110
110
  same_slug = (slug_used&.fetch(:id,nil) == existing_dashboard&.fetch(:id,nil))
111
111
 
112
112
  if slug_used && !same_slug then
113
- say_warning "slug #{slug_used.slug} already used for dashboard #{slug_used.title} in space #{slug_used.space_id}"
114
- say_warning "dashboard will be imported with new slug"
113
+ say_warning "slug #{slug_used.slug} already used for dashboard #{slug_used.title} in space #{slug_used.space_id}", output: output
114
+ say_warning("That dashboard is in the 'Trash' but not fully deleted yet", output: output) if slug_used.deleted
115
+ say_warning "dashboard will be imported with new slug", output: output
115
116
  end
116
117
 
117
118
  if existing_dashboard then
118
119
  if title_used && !same_title then
119
120
  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."
120
121
  end
121
- if @options[:force] then
122
- say_ok "Modifying existing dashboard #{existing_dashboard.id} #{existing_dashboard[:title]} in space #{target_space_id}"
123
- new_dash = source.select do |k,v|
124
- (keys_to_keep('update_dashboard') - [:space_id,:user_id,:slug]).include? k
125
- end
126
- new_dash[:slug] = source[:slug] unless slug_used && !same_slug
127
- return update_dashboard(existing_dashboard.id,new_dash)
128
- else
129
- raise Gzr::CLI::Error, "Dashboard #{existing_dashboard[:title]} with slug #{existing_dashboard[:slug]} already exists in space #{target_space_id}\nUse --force if you want to overwrite it"
122
+ raise Gzr::CLI::Error, "Dashboard #{existing_dashboard[:title]} with slug #{existing_dashboard[:slug]} already exists in space #{target_space_id}\nUse --force if you want to overwrite it" unless @options[:force]
123
+
124
+ say_ok "Modifying existing dashboard #{existing_dashboard.id} #{existing_dashboard[:title]} in space #{target_space_id}", output: output
125
+ new_dash = source.select do |k,v|
126
+ (keys_to_keep('update_dashboard') - [:space_id,:user_id,:slug]).include? k
130
127
  end
128
+ new_dash[:slug] = source[:slug] unless slug_used
129
+ new_dash[:deleted] = false if existing_dashboard[:deleted]
130
+ return update_dashboard(existing_dashboard.id,new_dash)
131
131
  else
132
132
  new_dash = source.select do |k,v|
133
133
  (keys_to_keep('create_dashboard') - [:space_id,:user_id,:slug]).include? k
@@ -50,11 +50,13 @@ module Gzr
50
50
  end
51
51
 
52
52
  def search_dashboards_by_slug(slug, space_id=nil)
53
- data = nil
53
+ data = []
54
54
  begin
55
55
  req = { :slug => slug }
56
56
  req[:space_id] = space_id if space_id
57
57
  data = @sdk.search_dashboards(req)
58
+ req[:deleted] = true
59
+ data = @sdk.search_dashboards(req) if data.empty?
58
60
  rescue LookerSDK::Error => e
59
61
  say_error "Error search_dashboards_by_slug(#{JSON.pretty_generate(req)})"
60
62
  say_error e.message
@@ -64,11 +66,13 @@ module Gzr
64
66
  end
65
67
 
66
68
  def search_dashboards_by_title(title, space_id=nil)
67
- data = nil
69
+ data = []
68
70
  begin
69
71
  req = { :title => title }
70
72
  req[:space_id] = space_id if space_id
71
73
  data = @sdk.search_dashboards(req)
74
+ req[:deleted] = true
75
+ data = @sdk.search_dashboards(req) if data.empty?
72
76
  rescue LookerSDK::Error => e
73
77
  say_error "Error search_dashboards_by_title(#{JSON.pretty_generate(req)})"
74
78
  say_error e.message
@@ -33,16 +33,16 @@ module Gzr
33
33
  @pastel ||= Pastel.new
34
34
  end
35
35
 
36
- def say_ok(data)
37
- puts pastel.green data
36
+ def say_ok(data, output: $stdout)
37
+ output.puts pastel.green data
38
38
  end
39
39
 
40
- def say_warning(data)
41
- puts pastel.yellow data
40
+ def say_warning(data, output: $stdout)
41
+ output.puts pastel.yellow data
42
42
  end
43
43
 
44
- def say_error(data)
45
- puts pastel.red data
44
+ def say_error(data, output: $stdout)
45
+ output.puts pastel.red data
46
46
  end
47
47
 
48
48
  def v3_1_available?
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.15"
23
+ VERSION = "0.2.16"
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.15
4
+ version: 0.2.16
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-10-26 00:00:00.000000000 Z
11
+ date: 2019-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tty-reader