module HelmWrapper

Constants

VERSION

Public Class Methods

create_directory(directory:, exists: true, purpose: nil) click to toggle source
# File lib/helm-wrapper/common.rb, line 7
def self.create_directory(directory:, exists: true, purpose: nil)
  return exists if File.directory?(directory)

  result = false

  if not purpose.nil? and purpose.kind_of?(String) and not purpose.strip.empty? then
    @logger.info("Creating directory for: #{purpose}, path: #{directory}")
  else
    @logger.info("Creating directory: #{directory}")
  end

  FileUtils.mkdir_p(directory)

  result = File.directory?(directory)
end
deployment_tasks(chart:, namespace:, release:, options: Hash.new) click to toggle source
# File lib/helm-wrapper.rb, line 25
def self.deployment_tasks(chart:, namespace:, release:, options: Hash.new)
  @logger.info("Building deployment tasks for release: #{release}...")

  @logger.fatal("Options must be specified as a hash!") unless options.kind_of?(Hash)

  binary_options = Hash.new
  binary_options["base"]    = options.key?("binary-base")    ? options["binary-base"]    : File.join(Dir.pwd, "vendor", "helm")
  binary_options["version"] = options.key?("binary-version") ? options["binary-version"] : Shared::Latest.instance.version

  chart_options = Hash.new
  chart_options["name"]    = chart
  chart_options["path"]    = nil
  chart_options["repos"]   = options.key?("chart-repos")   ? options["chart-repos"]   : Array.new
  chart_options["version"] = options.key?("chart-version") ? options["chart-version"] : String.new

  config_options = Hash.new
  config_options["atomic"]             = options.key?("config-atomic")             ? options["config-atomic"]             : false
  config_options["auth-azure"]         = options.key?("config-auth-azure")         ? options["config-auth-azure"]         : false
  config_options["auth-azure-options"] = options.key?("config-auth-azure-options") ? options["config-auth-azure-options"] : Hash.new
  config_options["base"]               = options.key?("config-base")               ? options["config-base"]               : File.join(Dir.pwd, "config")
  config_options["namespace"]          = namespace
  config_options["release"]            = release
  config_options["timeout"]            = options.key?("config-timeout")            ? options["config-timeout"]            : "5m0s"
  config_options["wait"]               = options.key?("config-wait")               ? options["config-wait"]               : true

  binary = HelmWrapper::Shared::Binary.new(options: binary_options)
  chart  = HelmWrapper::Shared::Chart.new(options: chart_options)

  tasks = Array.new
  tasks << HelmWrapper::Tasks::Apply.new(binary: binary, chart: chart, options: config_options)
  tasks << HelmWrapper::Tasks::Binary.new(binary: binary)
  tasks << HelmWrapper::Tasks::Destroy.new(binary: binary, chart: chart, options: config_options)
  tasks << HelmWrapper::Tasks::Template.new(binary: binary, chart: chart, options: config_options)
  return tasks
end
development_tasks(chart:, path:, oci: false, options: Hash.new) click to toggle source
# File lib/helm-wrapper.rb, line 63
def self.development_tasks(chart:, path:, oci: false, options: Hash.new)
  @logger.info("Building development tasks for path: #{path}...")

  @logger.fatal("Options must be specified as a hash!") unless options.kind_of?(Hash)

  binary_options = Hash.new
  binary_options["base"]    = options.key?("binary-base")    ? options["binary-base"]    : File.join(Dir.pwd, "vendor", "helm")
  binary_options["version"] = options.key?("binary-version") ? options["binary-version"] : Shared::Latest.instance.version

  chart_options = Hash.new
  chart_options["name"]    = chart
  chart_options["path"]    = path
  chart_options["repos"]   = options.key?("chart-repos")   ? options["chart-repos"]   : Array.new
  chart_options["version"] = String.new

  binary = HelmWrapper::Shared::Binary.new(options: binary_options)
  chart  = HelmWrapper::Shared::Chart.new(options: chart_options)

  tasks = Array.new
  tasks << HelmWrapper::Tasks::Binary.new(binary: binary)
  tasks << HelmWrapper::Tasks::Push.new(binary: binary, chart: chart) if oci
  tasks << HelmWrapper::Tasks::Validate.new(binary: binary, chart: chart)
  return tasks
end
find(base:, name:, exts:, description: "File") click to toggle source
# File lib/helm-wrapper/common.rb, line 25
def self.find(base:, name:, exts:, description: "File")
  exts.each do |ext|
    path = File.join(base, name + ext)
    return path if File.file?(path)
  end

  @logger.fatal("#{description} name: #{name} not found in location: #{base}!")
end