Class: Gzr::Commands::Dashboard::Mv

Inherits:
Gzr::Command show all
Includes:
Dashboard
Defined in:
lib/gzr/commands/dashboard/mv.rb

Instance Method Summary collapse

Methods included from Dashboard

#cat_dashboard, #create_dashboard, #create_dashboard_element, #create_dashboard_filter, #create_dashboard_layout, #delete_dashboard, #delete_dashboard_element, #delete_dashboard_filter, #delete_dashboard_layout, #get_all_dashboard_layout_components, #get_dashboard_layout, #import_lookml_dashboard, #query_dashboard, #search_dashboards_by_slug, #search_dashboards_by_title, #sync_lookml_dashboard, #trim_dashboard, #update_dashboard, #update_dashboard_element, #update_dashboard_filter, #update_dashboard_layout, #update_dashboard_layout_component

Methods included from Alert

#alert_notifications, #create_alert, #delete_alert, #follow_alert, #get_alert, #read_alert_notification, #search_alerts, #unfollow_alert, #update_alert, #update_alert_field

Methods inherited from Gzr::Command

#all_color_collections, #color_collection, #color_palette_lookup!, #create_merge_query, #create_query, #default_color_collection, #field_expressions_eval, #field_names, #find_color_palette_reference, #find_vis_config_reference, #get_auth, #get_user_by_id, #keys_to_keep, #keys_to_keep_internal, #merge_query, #pairs, #query, #render_csv, #rewrite_color_palette!, #run_inline_query, #update_color_palette!

Methods included from Session

#build_connection_hash, #login, #logout_all, #pastel, #read_token_data, #say_error, #say_ok, #say_warning, #sufficient_version?, #token_file, #update_auth, #with_session, #write_token_data

Constructor Details

#initialize(dashboard_id, target_folder_id, options) ⇒ Mv

Returns a new instance of Mv.



33
34
35
36
37
38
# File 'lib/gzr/commands/dashboard/mv.rb', line 33

def initialize(dashboard_id, target_folder_id, options)
  super()
  @dashboard_id = dashboard_id
  @target_folder_id = target_folder_id
  @options = options
end

Instance Method Details

#execute(input: $stdin, output: $stdout) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/gzr/commands/dashboard/mv.rb', line 40

def execute(input: $stdin, output: $stdout)
  say_warning("options: #{@options.inspect}", output: output) if @options[:debug]
  with_session do

    dash = query_dashboard(@dashboard_id)
    raise Gzr::CLI::Error, "Dashboard with id #{@dashboard_id} does not exist" unless dash

    matching_title = search_dashboards_by_title(dash[:title],@target_folder_id)
    if matching_title.empty? || matching_title.first[:deleted]
      matching_title = false
    end

    if matching_title
      raise Gzr::CLI::Error, "Dashboard #{dash[:title]} already exists in folder #{@target_folder_id}\nUse --force if you want to overwrite it" unless @options[:force]
      say_ok "Deleting existing dashboard #{matching_title.first[:id]} #{matching_title.first[:title]} in folder #{@target_folder_id}", output: output
      update_dashboard(matching_title.first[:id],{:deleted=>true})
    end
    update_dashboard(dash[:id],{:folder_id=>@target_folder_id})
    output.puts "Moved dashboard #{dash[:id]} to folder #{@target_folder_id}" unless @options[:plain]
  end
end