class Kubes::Compiler

Public Class Methods

new(options={}) click to toggle source
# File lib/kubes/compiler.rb, line 8
def initialize(options={})
  @options = options
end

Public Instance Methods

pretty(path) click to toggle source
# File lib/kubes/compiler.rb, line 69
def pretty(path)
  path.sub("#{Kubes.root}/",'')
end
resources() click to toggle source
# File lib/kubes/compiler.rb, line 30
def resources
  paths = []
  expr = "#{Kubes.root}/.kubes/resources/**/*"
  Dir.glob(expr).each do |path|
    next unless process?(path)
    paths << path
  end
  paths
end
run() click to toggle source
# File lib/kubes/compiler.rb, line 12
def run
  Kubes.config # trigger config load. So can set ENV['VAR'] in config/envs/dev.rb etc
  run_hooks("kubes.rb", name: "compile") do
    results = resources.map do |path|
      strategy = Strategy.new(@options.merge(path: path))
      strategy.compile
    end.compact

    results.each do |result|
      write(result)
    end
  end

  write_full

  logger.info "Compiled  .kubes/resources files to .kubes/output" if show_compiled_message?
end
show_compiled_message?() click to toggle source
# File lib/kubes/compiler.rb, line 65
def show_compiled_message?
  !%w[g ge get].include?(ARGV.first)
end
write(result) click to toggle source
# File lib/kubes/compiler.rb, line 40
def write(result)
  result.decorate!(:post)
  filename, content = result.filename, result.content
  dest = "#{Kubes.root}/.kubes/output/#{filename}"

  if result.io?
    FileUtils.cp(filename, dest) # preserve permissions
  else
    FileUtils.mkdir_p(File.dirname(dest))
    IO.write(dest, content)
  end

  logger.debug "Compiled  #{pretty(dest)}"
end
write_full() click to toggle source
# File lib/kubes/compiler.rb, line 55
def write_full
  full = sorted_files.inject([]) do |acc, file|
    acc << IO.read(file)
  end
  content = full.join("\n")
  path = "#{Kubes.root}/.kubes/output/full.yaml"
  IO.write(path, content)
  logger.debug "Compiled  #{pretty(path)}"
end