Skip to content
This repository
Fetching contributors…

Cannot retrieve contributors at this time

file 97 lines (86 sloc) 3.507 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
#
# Rakefile for Cluster Chef Knife plugins
#
# Author:: Adam Jacob (<adam@opscode.com>)
# 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.
#

require 'rubygems' unless defined?(Gem)
require 'bundler'
begin
  Bundler.setup(:default, :development)
rescue Bundler::BundlerError => e
  $stderr.puts e.message
  $stderr.puts "Run `bundle install` to install missing gems"
  exit e.status_code
end
require 'json'
require 'jeweler'
require 'rspec/core/rake_task'
require 'yard'

# Load constants from rake config file.
$LOAD_PATH.unshift('tasks')
Dir[File.join('tasks', '*.rake')].sort.each{|f| load(f) }

# ---------------------------------------------------------------------------
#
# Jeweler -- release cluster_chef as a gem
#

%w[ cluster_chef cluster_chef-knife ].each do |gem_name|
  Jeweler::Tasks.new do |gem|
    gem.name = gem_name
    gem.homepage = "http://infochimps.com/labs"
    gem.license = NEW_COOKBOOK_LICENSE.to_s
    gem.summary = %Q{cluster_chef allows you to orchestrate not just systems but clusters of machines. It includes a powerful layer on top of knife and a collection of cloud cookbooks.}
    gem.description = %Q{cluster_chef allows you to orchestrate not just systems but clusters of machines. It includes a powerful layer on top of knife and a collection of cloud cookbooks.}
    gem.email = SSL_EMAIL_ADDRESS
    gem.authors = ["Infochimps"]

    ignores = File.readlines(".gitignore").grep(/^[^#]\S+/).map{|s| s.chomp }
    dotfiles = [".gemtest", ".gitignore", ".rspec", ".yardopts"]
    gem.files = dotfiles + Dir["**/*"].
      reject{|f| f =~ %r{^cookbooks/} }.
      reject{|f| File.directory?(f) }.
      reject{|f| ignores.any?{|i| File.fnmatch(i, f) || File.fnmatch(i+'/*', f) || File.fnmatch(i+'/**/*', f) } }
    gem.test_files = gem.files.grep(/^spec\//)
    gem.require_paths = ['lib']

    if gem.name == 'cluster_chef'
      gem.files.reject!{|f| f =~ %r{^(cluster_chef-knife.gemspec|lib/chef/knife/)} }
      gem.add_runtime_dependency 'cluster_chef-knife', "= #{File.read('VERSION').strip}"
    elsif gem.name == 'cluster_chef-knife'
      gem.files.reject!{|f| f =~ %r{^(cluster_chef.gemspec|lib/cluster_chef)} }
    else
      raise "Don't know what to include for gem #{gem.name}"
    end
  end
  Jeweler::RubygemsDotOrgTasks.new
end

# ---------------------------------------------------------------------------
#
# RSpec -- testing
#
RSpec::Core::RakeTask.new(:spec) do |spec|
  spec.pattern = FileList['spec/**/*_spec.rb']
end

RSpec::Core::RakeTask.new(:rcov) do |spec|
  spec.pattern = 'spec/**/*_spec.rb'
  spec.rcov = true
  spec.rcov_opts = %w[ --exclude .rvm --no-comments --text-summary]
end

# ---------------------------------------------------------------------------
#
# Yard -- documentation
#
YARD::Rake::YardocTask.new

# ---------------------------------------------------------------------------

task :default => :spec
Something went wrong with that request. Please try again.