#!/usr/bin/env ruby # # ./chef-server - Serving up piping hot infrastructure! # # Author:: Adam Jacob () # Copyright:: Copyright (c) 2008 Opscode, Inc. # License:: Apache License, Version 2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Based on the 'merb' command, by Ezra # Add chef and chef-server-slice lib dirs to the load path # Load chef and chef-server slice from source rather than gem, if present require "rubygems" require "merb-core" # Load chef and chef-server-api from source rather than gem, if present $:.unshift(File.expand_path(File.dirname(__FILE__) + '/../../chef/lib')) $:.unshift(File.expand_path(File.dirname(__FILE__) + '/../lib')) # Print the version if we have -v or --version if ARGV.any? { |arg| arg =~ /\-v|\-\-version/ } require 'chef-server-webui/version' puts "Chef Server (Web UI) Version: #{ChefServerWebui::VERSION}" exit 1 end require 'chef' require 'chef-server-webui' if ARGV[0] && ARGV[0] =~ /^[^-]/ ARGV.push "-H" end unless %w[-a --adapter -i --irb-console -r --script-runner].any? { |o| ARGV.index(o) } ARGV.push *%w[-a thin] end unless %w[-p --port].any? { |o| ARGV.index(o) } ARGV.push *%w[-p 4040] end # Tell merb where to root ARGV.push *[ "-m", CHEF_SERVER_WEBUI_ROOT] if index = ARGV.index("-C") config = ARGV[index+1] ARGV.delete("-C") ARGV.delete(config) Chef::Config.from_file(File.expand_path(config)) else Chef::Config.from_file( File.join("/etc", "chef", "server.rb") ) end Chef::Log.init(Chef::Config[:log_location]) Chef::Log.level = Chef::Config[:log_level] Merb.start