Sha256: f62e34c6f9fc0c85579f34ca80569a6b37de46808703bd7890f25d395a34781b

Contents?: true

Size: 1.75 KB

Versions: 1

Compression:

Stored size: 1.75 KB

Contents

#!/usr/bin/env ruby
require 'rubygems'
require "json"
require 'fileutils'
require 'yaml'
require 'tempfile'

def fileify(contents)
  file = Tempfile.new("soloist")
  file << contents
  file.flush
  file
end

def walk_up_and_find_file(filenames)
  pwd = FileUtils.pwd
  file = nil
  path_to_file = ""
  while !file && FileUtils.pwd != '/'
    file = filenames.detect { |f| Dir.glob("*").include?(f) }
    FileUtils.cd("..")
    path_to_file << "../" unless file
  end
  FileUtils.cd(pwd)
  file_contents = File.read(path_to_file + file) if file
  [file_contents, path_to_file]
end

log_level = ENV['LOG_LEVEL'] || "info"

soloistrc_contents, soloistrc_path = walk_up_and_find_file(["soloistrc"])
soloistrc = YAML.load(soloistrc_contents)

json_contents = {
  :recipes => soloistrc["Recipes"]
}

cookbook_paths = soloistrc["Cookbook_Paths"].map do |v|
  (v =~ /\//) == 0 ? v : "#{FileUtils.pwd}/#{soloistrc_path}/#{v}"
end
puts FileUtils.pwd
puts cookbook_paths.inspect
solo_rb_contents = "cookbook_path #{cookbook_paths.inspect}"

# if ARGV.length >= 1
#   json_config = JSON.parse(File.read(json_file))
#   json_config["recipes"] = ARGV
#   json_file = "/tmp/#{File.basename(json_file)}"
#   puts "OVERRIDING RECIPES: running [#{json_config["recipes"].join(", ")}].  Temp json config file: #{json_file}"
#   File.open(json_file, "w+"){|f| f<<JSON.pretty_generate(json_config) }
# end

solo_rb = fileify(solo_rb_contents)
metadata_json = fileify(json_contents.to_json)

env_vars = ["PATH=#{ENV['PATH']}"]
%w{BUNDLE_PATH GEM_HOME GEM_PATH RAILS_ENV}.each do |v|
  env_vars << "#{v}=#{ENV[v]}" unless ENV[v].nil?
end

command = "sudo bash -c '#{env_vars.join(' ')} chef-solo -j #{metadata_json.path} -c #{solo_rb.path} -l #{log_level}'"

puts "running chef: " + command
system(command) || exit(1)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
soloist-0.0.3 bin/soloist