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