Class: Gzr::Commands::Connection::Import

Inherits:
Gzr::Command show all
Includes:
Gzr::Connection, FileHelper
Defined in:
lib/gzr/commands/connection/import.rb

Instance Method Summary collapse

Methods included from FileHelper

#read_file, #write_file

Methods included from Gzr::Connection

#cat_connection, #create_connection, #delete_connection, #query_all_connections, #query_all_dialects, #test_connection, #trim_connection, #update_connection

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(file, options) ⇒ Import

Returns a new instance of Import.



35
36
37
38
39
# File 'lib/gzr/commands/connection/import.rb', line 35

def initialize(file, options)
  super()
  @file = file
  @options = options
end

Instance Method Details

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



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/gzr/commands/connection/import.rb', line 41

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

    if @options[:prompt]
      reader = TTY::Reader.new
      @secret = reader.read_line("Enter your connection password:", echo: false)
      @secret.chomp!
    end

    read_file(@file) do |data|
      if !!cat_connection(data[:name])
        name = data[:name]
        if !@options[:force]
          raise Gzr::CLI::Error, "Connection #{name} already exists\nUse --force if you want to overwrite it"
        end
        data.select! do |k,v|
          keys_to_keep('update_connection').include? k
        end
        data[:password] = @secret if @secret
        connection = update_connection(name, data)
      else
        data.select! do |k,v|
          keys_to_keep('create_connection').include? k
        end
        data[:password] = @secret if @secret
        connection = create_connection(data)
      end
      output.puts "Imported connection #{connection[:name]}" unless @options[:plain]
      output.puts connection[:id] if @options[:name]
    end
  end
end