Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

201 lines (166 sloc) 6.512 kb
require 'fileutils'
gem 'albacore', '> 0.2.4'
require 'albacore'
require './tools/albacore/nuspec_patch'
NH_VERSION = '3.x'
def get_version
ENV['BUILD_NUMBER'] || '1.3.0.0'
end
task :default => 'build:all'
namespace :setup do
task :ensure_gemcutter_source do
puts 'Ensuring gemcutter.org is registered as a gem source'
unless `gem source -l`.include? 'http://gemcutter.org'
puts 'Setting Gemcutter as a gem source'
`gem source -a http://gemcutter.org`
end
end
task :install_mspec, :resharper_version, :vs_version do |t, args|
resharper_version = args[:resharper_version] || '5.1'
vs_version = args[:vs_version] || 10.0
puts 'Installing MSpec ReSharper runner'
plugins = "#{ENV['APPDATA']}/JetBrains/ReSharper/v#{resharper_version}/vs#{vs_version}/Plugins"
to_copy = ['Machine.Specifications', "Machine.Specifications.ReSharperRunner.#{resharper_version}"]
FileUtils.mkdir plugins unless File.exists? plugins
to_copy.each do |f|
FileUtils.cp "tools/mspec/#{f}.dll", plugins
FileUtils.cp "tools/mspec/#{f}.pdb", plugins
end
end
end
namespace :ci do
task :run_ci_build => [
'build:all',
'docs:build',
'package:all',
]
end
namespace :source do
desc 'Update assembly info with latest version number'
assemblyinfo :update_version do |asm|
asm.output_file = 'src/CommonAssemblyInfo.cs'
asm.version = get_version
asm.company_name = 'http://fluentnhibernate.org'
asm.product_name = 'FluentNHibernate'
asm.copyright = 'Copyright 2008-2011 James Gregory and contributors (Paul Batum, Hudson Akridge et al). All rights reserved.'
asm.namespaces = ['System.Security']
asm.custom_attributes :AllowPartiallyTrustedCallers => nil
puts "The build number is #{asm.version}"
end
task :nhibernate_version, :nhibernate_version do |t,args|
args.with_defaults :nhibernate_version => ENV['nhibernate_version'] || NH_VERSION
raise "Unknown NHibernate version #{args.nhibernate_version} (check your tools/NHibernate folder)" unless File.directory? "tools/NHibernate/#{args.nhibernate_version}"
# clear out existing selected nh version
files_to_delete = Dir["tools/NHibernate/*.*"].reject {|f| File.directory? f }
files_to_delete.each {|f| File.delete f }
# copy specific nh version files to the main directory
files_to_copy = Dir["tools/NHibernate/#{args.nhibernate_version}/*.*"]
files_to_copy.each {|f| FileUtils.copy f, "tools/NHibernate/" }
end
desc 'Compile the source'
msbuild :compile, [:nhibernate_version] => :nhibernate_version do |msb,args|
args.with_defaults :nhibernate_version => ENV['nhibernate_version'] || NH_VERSION
nh_version_precompiler_switch = 'NH' + args.nhibernate_version.gsub('.', '')
puts nh_version_precompiler_switch
msb.properties = { :configuration => :Release, :DefineConstants => nh_version_precompiler_switch }
msb.targets [:Clean, :Build]
msb.solution = 'src/FluentNHibernate.sln'
end
end
namespace :specs do
desc 'Run all tests and specs'
task :all => [:nunit, :mspec]
desc 'Run MSpec specs'
mspec :mspec do |mspec|
mspec.command = 'tools/mspec/mspec.exe'
mspec.assemblies 'src/FluentNHibernate.Specs/bin/Release/FluentNHibernate.Specs.dll'
end
desc 'Run NUnit tests'
nunit :nunit do |nunit|
nunit.command = 'tools/nunit/nunit-console-x86.exe'
nunit.assemblies 'src/FluentNHibernate.Testing/bin/Release/FluentNHibernate.Testing.dll'
end
end
namespace :build do
desc 'Run full build including tests'
task :all => ['source:update_version', 'source:compile', 'specs:all'] do
puts 'Copying output to build directory'
Dir.mkdir 'build' unless File.exist? 'build'
Dir.glob 'src/FluentNHibernate/bin/Release/*.{dll,pdb,xml}' do |path|
copy path, 'build' if File.file? path
end
puts 'Build complete'
end
end
namespace :docs do
desc 'Create API docs'
docu :build do |d|
d.command = 'tools/docu/docu.exe'
d.assemblies 'build/FluentNHibernate.dll'
end
end
namespace :package do
task :prepare_dist_directory do
FileUtils.rm_rf 'dist'
Dir.mkdir 'dist'
end
desc 'Create zip of source-tree'
zip :source => :prepare_dist_directory do |zip|
file_prefix = ENV['SourceDistFilename'] || 'fluentnhibernate-source'
zip.directories_to_zip = ['./']
zip.output_file = "#{file_prefix}-#{get_version}.zip"
zip.output_path = 'dist'
zip.exclusions = get_exclusions
end
def get_exclusions
exclusions = []
%w{build dist results output}.each {|x| exclusions << "#{x}" << "#{x}/**/**" }
%w{bin obj}.each {|x| exclusions << "**/#{x}" << "**/#{x}/**/**" }
[/_ReSharper/, /.user/, /.suo/, /.resharper/, /.cache/].each {|x| exclusions << x }
exclusions
end
desc 'Create zip of binaries'
zip :binaries => :prepare_dist_directory do |zip|
file_prefix = ENV['BinaryDistFilename'] || 'fluentnhibernate-binary'
zip.directories_to_zip = ['build']
zip.output_file = "#{file_prefix}-#{get_version}.zip"
zip.output_path = 'dist'
end
desc 'Create zip of API docs'
zip :docs => :prepare_dist_directory do |zip|
zip.directories_to_zip = ['output']
zip.output_file = "fluentnhibernate-docs-#{get_version}.zip"
zip.output_path = 'dist'
end
nuspec do |nu|
nu.id = 'FluentNHibernate'
nu.version = get_version()
nu.authors = 'James Gregory and contributors'
nu.description = 'Fluent, XML-less, compile safe, automated, convention-based mappings for NHibernate.'
nu.title = 'Fluent NHibernate'
nu.language = 'en-US'
nu.licenseUrl = 'http://github.com/jagregory/fluent-nhibernate/raw/master/LICENSE.txt'
nu.projectUrl = 'http://fluentnhibernate.org'
nu.dependency 'NHibernate', '3.2.0.4000'
nu.working_directory = 'build'
nu.output_file = 'fluentnhibernate.nuspec'
nu.file 'FluentNHibernate.dll', 'lib'
nu.file 'FluentNHibernate.pdb', 'lib'
nu.tags = 'orm dal nhibernate conventions'
end
nugetpack do |nu|
nu.command = 'tools/nuget/NuGet.exe'
nu.nuspec = 'build/fluentnhibernate.nuspec'
nu.base_folder = 'build'
nu.output = 'dist'
end
desc 'Create nuget spec and package'
task :nuget => [:nuspec, :nugetpack]
desc 'Package everything (src, bin, docs, nuget)'
task :all => [:source, :binaries, :docs, :nuget]
end
task :sln do
Thread.new do
system "devenv src/FluentNHibernate.sln"
end
end
Jump to Line
Something went wrong with that request. Please try again.