Skip to content

Instantly share code, notes, and snippets.

@justinstoller
Created January 3, 2013 18:17
Show Gist options
  • Save justinstoller/4445559 to your computer and use it in GitHub Desktop.
Save justinstoller/4445559 to your computer and use it in GitHub Desktop.
require 'rubygems'
require 'rubygems/package_task'
Dir['tasks/**/*.rb'].each { |t| load t }
spec = Gem::Specification.new do |s|
s.name = "hiera-json"
s.version = described_version
s.author = "Puppet Labs"
s.email = "info@puppetlabs.com"
s.homepage = "https://github.com/puppetlabs/hiera-json/"
s.summary = "JSON backend for the Hiera hierarcical data store"
s.description = "Store Hiera data in JSON"
s.files = FileList["lib/**/*"].to_a
s.require_path = "lib"
s.test_files = FileList["spec/**/*.rb"].to_a
s.has_rdoc = true
s.add_dependency 'hiera', '~>0.3.0'
s.add_dependency 'json'
end
Gem::PackageTask.new(spec) do |pkg|
pkg.need_tar = true
end
desc "Compatability for test:spec -- Runs all specs"
task :test do
Rake::Task['test:spec'].invoke
end
namespace :test do
desc "Prepare Environment for Testing"
task :prep do
require 'rubygems'
require 'rubygems/dependency_installer'
require 'fileutils'
def gem(*args)
name = args.shift
options = args.last.is_a?(Hash) ? args.delete_at(-1) : {}
ver = args.empty? ? '>= 0' : args.shift
if options[:git]
dir = options[:git].match(/\/([^\/]+)\.git$/)[1]
branch = options[:branch] ? "-b #{options[:branch]}" : nil
FileUtils.mkdir_p 'vendor'
puts Dir.pwd
Dir.chdir 'vendor'
puts Dir.pwd
`git clone #{options[:git]} #{branch}`
Dir.chdir dir
`rake gem`
Dir.chdir 'pkg'
puts Dir.pwd
name = `ls`.chomp
installer = Gem::DependencyInstaller.new
installer.install name
Dir.chdir @root_dir
else
version = Gem::Requirement.new ver
installer = Gem::DependencyInstaller.new
installer.install name, version
end
end
def source(url)
url = url == :rubygems ? 'https://rubygems.org' : url
Gem.instance_variable_set :@sources, [ url ]
end
@root_dir = Dir.pwd
FileUtils.rm_rf 'vendor'
eval File.read('Gemfile')
FileUtils.rm_rf 'vendor'
end
desc "Run all specs"
task :spec do
require 'rspec/core/rake_task'
RSpec::Core::RakeTask.new(:hiddenrspec) do |t|
t.pattern = 'spec/**/*_spec.rb'
t.rspec_opts = File.read("spec/spec.opts").chomp || ""
end
Rake::Task['hiddenrspec'].invoke
end
end
task :default => [:test, :repackage]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment