Module: Shuttle::Cli

Defined in:
lib/shuttle/cli.rb,
lib/shuttle/cli/version.rb

Constant Summary collapse

VERSION =
"0.2.0"

Class Method Summary collapse

Class Method Details

.runObject



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/shuttle/cli.rb', line 7

def self.run
  prompt = TTY::Prompt.new(interrupt: :signal)

  begin
    shuttle_config = JSON.parse(File.read("#{ENV['HOME']}/.shuttle.json"))

    prompt.on(:keypress) do |event|
      if event.value == 'j' || event.key.name == :ctrl_n
        prompt.trigger(:keydown)
      end
      if event.value == 'k' || event.key.name == :ctrl_p
        prompt.trigger(:keyup)
      end
    end

    categories = shuttle_config['hosts']
    while categories.size == 1
      key = prompt.select('Category:', categories[0].keys)
      categories = categories[0][key]
    end

    node = prompt.select('Node:', categories.map { |c| c['title'] })

    selected_node = categories.detect { |c| c['title'] == node }

    puts "Connecting to: #{selected_node['cmd']}"
    exec(selected_node['cmd'])

  rescue Interrupt => e
    puts ''
    puts 'Bye bye... 🐗'
  end
end