class Kontena::Plugin::Shell::KontenaCommand

Public Instance Methods

cmd() click to toggle source
# File lib/kontena/plugin/shell/commands/kontena.rb, line 15
def cmd
  cmd = Kontena::MainCommand.new('')
  cmdline = context.to_a + args
  cmdline.shift if cmdline.first == 'kontena'
  cmd.parse(cmdline)
  cmd
end
execute() click to toggle source
# File lib/kontena/plugin/shell/commands/kontena.rb, line 23
def execute
  if cmd.subcommand_name && cmd.subcommand_name == 'shell'
    puts Kontena.pastel.red("Already running inside KOSH")
  else
    cmd.run([])
  end
rescue Clamp::HelpWanted => ex
  if args.include?('--help') || args.include?('-h')
    puts subcommand_class.help('')
  else
    context.concat(args)
  end
rescue SystemExit => ex
  puts Kontena.pastel.red('[Command exited with error]') unless ex.status.zero?
rescue => ex
  puts Kontena.pastel.red("ERROR: #{ex.message}")
ensure
  Thread.main['spinners'] && Thread.main['spinners'].map(&:kill) && Thread.main['spinners'] = nil
end
subcommand_class() click to toggle source
# File lib/kontena/plugin/shell/commands/kontena.rb, line 43
def subcommand_class
  (context + args).reject { |t| t.start_with?('-') }.inject(Kontena::MainCommand) do |base, token|
    if base.has_subcommands?
      sc = base.recognised_subcommands.find { |sc| sc.names.include?(token) }
      sc ? sc.subcommand_class : base
    else
      base
    end
  end
end