class FubuRake::Solution
Attributes
build_number[RW]
compilemode[RW]
options[RW]
Public Class Methods
new(&block)
click to toggle source
# File lib/fuburake.rb, line 77 def initialize(&block) tasks = SolutionTasks.new block.call(tasks) @defaultTask = create_task(:default, "**Default**, compiles and runs tests") @ciTask = create_task(:ci, "Target used for the CI server") @ciTask.enhance [:default] options = tasks.options options ||= {} tc_build_number = ENV["BUILD_NUMBER"] build_revision = tc_build_number || Time.new.strftime('5%H%M') asm_version = BUILD_VERSION + ".0" @build_number = "#{BUILD_VERSION}.#{build_revision}" # SAMPLE: fuburake-options @options = { :compilemode => ENV['config'].nil? ? "Debug" : ENV['config'], :clrversion => 'v4.0.30319', :platform => ENV['platform'].nil? ? "" : ENV['platform'], :unit_test_list_file => 'TESTS.txt', :unit_test_projects => [], :build_number => @build_number, :asm_version => asm_version, :tc_build_number => tc_build_number, :build_revision => build_revision, :source => 'src', :nuget_publish_folder => 'artifacts', :nuget_publish_url => nil, :nuget_api_key => ENV['api_key'] }.merge(options) # ENDSAMPLE @compilemode = @options[:compilemode] tasks.clean ||= [] tasks.defaults ||= [] tasks.ci_steps ||= [] tasks.precompile ||= [] tasks.doc_exports ||= [] enable_docs tasks FubuRake::AssemblyInfo.create tasks, @options FubuRake::Ripple.create tasks, @options make_clean tasks FubuRake::MSBuild.create_task tasks, @options FubuRake::NUnit.create_task tasks, @options add_dependency :compile, [:clean, :version, 'ripple:restore', 'docs:bottle'] Rake::Task[:compile].enhance(tasks.precompile) add_dependency :unit_test, :compile add_dependency :default, [:compile, :unit_test] add_dependency :default, :unit_test Rake::Task[:default].enhance tasks.defaults Rake::Task[:ci].enhance tasks.ci_steps add_dependency :ci, tasks.ci_steps add_dependency :ci, ["ripple:history", "ripple:package"] tasks.compilations ||= [] tasks.compilations.each do |c| c.create @options end if tasks.bottles.empty? && tasks.bottles_enabled Dir.glob('**/.package-manifest').each do |f| dir = File.dirname(f) project = dir.split('/').last if project.index('.Docs') == nil proj_file = "#{dir}/#{project}.csproj" if File.exists?(proj_file) tasks.assembly_bottle File.basename(project) end end end end if !tasks.bottles.empty? tasks.bottles.each do |c| c.create @options end end tasks.doc_exports.each do |opts| opts[:version] = @build_number docs = FubuDocs.new(opts) doc_task_name = docs.export_tasks if opts[:include_in_ci] add_dependency :ci, doc_task_name end end end
Public Instance Methods
create_task(name, description)
click to toggle source
# File lib/fuburake.rb, line 176 def create_task(name, description) task = Rake::Task.define_task name do end task.add_description description return task end
dump_html(options)
click to toggle source
# File lib/fuburake.rb, line 210 def dump_html(options) options[:version] = @build_number docs = FubuDocs.new(options) docs.dump_task end
enable_docs(tasks)
click to toggle source
# File lib/fuburake.rb, line 198 def enable_docs(tasks) if tasks.fubudocs_enabled if Platform.is_nix Dir.glob('**/*.Docs.csproj').each do |f| tasks.assembly_bottle File.basename(f, ".csproj") end else require_relative 'fubudocs' end end end
make_clean(tasks)
click to toggle source
# File lib/fuburake.rb, line 185 def make_clean(tasks) if tasks.clean.any? @cleanTask = Rake::Task.define_task :clean do tasks.clean.each do |dir| cleanDirectory dir end end @cleanTask.add_description "Prepares the working directory for a new build" end end