forked from infochimps-labs/ironfan
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Rakefile
91 lines (80 loc) · 2.92 KB
/
Rakefile
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
#
# 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, :support)
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 ironfan as a gem
#
Jeweler::Tasks.new do |gem|
gem.name = 'ironfan'
gem.homepage = "http://infochimps.com/labs"
gem.license = NEW_COOKBOOK_LICENSE.to_s
gem.summary = %Q{Infochimps' lightweight cloud orchestration toolkit, built on top of Chef.}
gem.description = %Q{Ironfan 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| 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']
end
Jeweler::RubygemsDotOrgTasks.new
# ---------------------------------------------------------------------------
#
# RSpec -- testing
#
RSpec::Core::RakeTask.new(:spec) do |spec|
spec.pattern = 'spec/{ironfan,chef,ironfan/*}/*_spec.rb'
end
desc 'Run :spec task with coverage using Simplecov'
task :coverage do
ENV['IRONFAN_COV'] = 'true'
Rake::Task[:spec].invoke
end
RSpec::Core::RakeTask.new(:integration) do |spec|
spec.pattern = 'spec/integration/**/*_spec.rb'
end
# ---------------------------------------------------------------------------
#
# Yard -- documentation
#
YARD::Rake::YardocTask.new
desc "Alias for 'rake yard'"
task :doc => :yard
# ---------------------------------------------------------------------------
task :default => :spec