class KubeDeployTools::Kdt

Constants

DESCRIPTIONS

Public Class Methods

new(path, args) click to toggle source
# File lib/kube_deploy_tools/kdt.rb, line 14
def initialize(path, args)
  KubeDeployTools::Logger.logger = KubeDeployTools::FormattedLogger.build

  @path = path
  @args = args
end

Public Instance Methods

bins_names() click to toggle source
# File lib/kube_deploy_tools/kdt.rb, line 21
def bins_names
  @bins ||= Dir["#{@path}/*"].map { |x| File.basename(x) } - ['kdt']
end
display_bins() click to toggle source
# File lib/kube_deploy_tools/kdt.rb, line 25
def display_bins
  # Print full runtime version
  version = Gem.loaded_specs["kube_deploy_tools"].version
  puts "kube_deploy_tools #{version}"

  bins_names.each do |bin|
    spaces_count = 25 - bin.size
    puts "-> #{bin}#{' ' * spaces_count}| #{DESCRIPTIONS[bin]}"
  end
end
execute!() click to toggle source
# File lib/kube_deploy_tools/kdt.rb, line 36
def execute!
  bin = @args.first

  raise "command '#{bin}' is not a valid command" unless valid_bin?(bin)
  bin_with_path = "#{@path}/#{bin}"
  bin_args = @args[1..-1]

  # calling exec with multiple args will prevent shell expansion
  # https://ruby-doc.org/core/Kernel.html#method-i-exec
  exec bin_with_path, *bin_args
end
valid_bin?(bin) click to toggle source
# File lib/kube_deploy_tools/kdt.rb, line 48
def valid_bin?(bin)
  bins_names.include?(bin)
end