class Canals::Cli::Setup

Public Instance Methods

bind_address(bind) click to toggle source
# File lib/canals/cli/setup.rb, line 25
def bind_address(bind)
  Canals.config[:bind_address] = bind
  Canals.config.save!
end
check(check_result, message) click to toggle source
# File lib/canals/cli/setup.rb, line 89
def check(check_result, message)
  spaces = "  " * (shell.padding + 1)
  say "#{spaces}#{message}#{spaces}#{humanize(check_result)}"
  return check_result
end
check_install_completion() click to toggle source
# File lib/canals/cli/setup.rb, line 77
def check_install_completion
  if !check(Canals::Tools::Completion.completion_installed?, "Checking if shell completion is installed...")
    yes?('Shell completion not installed. Would you like to install it now? ') && install_completion
  end
end
completion() click to toggle source
# File lib/canals/cli/setup.rb, line 20
def completion
  install_completion
end
humanize(bool) click to toggle source
# File lib/canals/cli/setup.rb, line 95
def humanize(bool)
  bool ? set_color("yes", :green) : set_color("no", :red)
end
install_completion() click to toggle source
# File lib/canals/cli/setup.rb, line 83
def install_completion
  first_time = Canals::Tools::Completion.install_completion
  say "Shell completion installed.", :green if first_time
  say "Bash completion script #{first_time ? "installed" : "upgraded"}, use `source #{Canals::Tools::Completion.cmp_file}` to reload it", :red
end
setup_first_environment() click to toggle source
# File lib/canals/cli/setup.rb, line 31
def setup_first_environment
  say "We'll start by setting up your first environment", :green
  say "An 'environment' is the server you connect your tunnels through. you can have many environments."
  say "The first environment is the default one used for new connections (but you can always change this default in the future)"
  say ""
  return unless yes? "Wait, should we setup your first environment?", :green
  opts = {}
  opts["name"]     = ask "  Name for environment:"
  opts["hostname"] = ask "  Hostname:"
  opts["user"]     = ask "  User:"
  opts["pem"]      = ask "  PEM file:", :path => true
  opts["default"]  = true
  opts.delete_if { |key, value| value.to_s.strip.empty? }
  if opts["name"].nil? || opts["hostname"].nil?
    say "couldn't add first environment, use 'canal environment create ...' to add it manually.", :red
    return
  end
  env = Canals::Environment.new(opts)
  Canals.repository.add_environment(env)
  say "Environment added. To add more environments in the future, use 'canal environment create...'", :green
end
setup_first_tunnel() click to toggle source
# File lib/canals/cli/setup.rb, line 53
def setup_first_tunnel
  return unless yes? "Should we setup a first tunnel?", :green

  opts = {}
  shell.padding += 1
  opts["name"]        = ask "Name for Tunnel:"
  opts["remote_host"] = ask "Remote host:"
  opts["remote_port"] = ask "Remote port:"
  opts["local_port"]  = ask "Local port:", :default =>opts["remote_port"]
  use_env             = !Canals.repository.environment.nil? && yes?("* Use stored environment?", :bold)
  if use_env
    opts["env"]       = ask "Environment:", :default => Canals.repository.environment.name
  else
    opts["hostname"] = ask "Hostname:"
    opts["user"]     = ask "User:"
    opts["pem"]      = ask "PEM file:", :path => true
  end
  opts.delete_if { |key, value| value.to_s.strip.empty? }
  shell.padding -= 1
  opts = Canals::CanalOptions.new(opts)
  Canals.create_tunnel(opts)
  say "Tunnel added. To add more tunnels in the future, use 'canal create...'", :green
end
wizard() click to toggle source
# File lib/canals/cli/setup.rb, line 11
def wizard
  say "Welcome to the Canals Setup Wizard!", :green
  setup_first_environment
  setup_first_tunnel
  check_install_completion
  say "Setup complete. Thanks! :)", :green
end