Sha256: 6d46def1256d5b2a13524bd8763dbbc847a1dc70a310cc14e7bac2931fe8a2fd

Contents?: true

Size: 1.96 KB

Versions: 7

Compression:

Stored size: 1.96 KB

Contents

require 'albacore/albacoretask'
require 'albacore/config/msbuildconfig.rb'

class MSBuild
  include Albacore::Task
  include Albacore::RunCommand
  include Configuration::MSBuild
  
  attr_accessor :solution, :verbosity, :loggermodule, :max_cpu_count
  attr_array :targets
  attr_hash :properties, :other_switches
  
  def initialize
    super()
    update_attributes msbuild.to_hash
  end
  
  def execute
    build_solution(@solution)
  end

  def nologo
    @nologo = true     
  end
  
  def build_solution(solution)
    check_solution solution
    
    command_parameters = []
    command_parameters << "\"#{solution}\""
    command_parameters << "\"/verbosity:#{@verbosity}\"" if @verbosity != nil
    command_parameters << "\"/logger:#{@loggermodule}\"" if @loggermodule != nil
    command_parameters << "\"/maxcpucount:#{@max_cpu_count}\"" if @max_cpu_count != nil
    command_parameters << "\"/nologo\"" if @nologo
    command_parameters << build_properties if @properties != nil
    command_parameters << build_switches if @other_switches != nil
    command_parameters << "\"/target:#{build_targets}\"" if @targets != nil
    
    result = run_command "MSBuild", command_parameters.join(" ")
    
    failure_message = 'MSBuild Failed. See Build Log For Detail'
    fail_with_message failure_message if !result
  end

  def check_solution(file)
    return if file
    msg = 'solution cannot be nil'
    fail_with_message msg
  end
  
  def build_targets
    @targets.join ";"
  end

  def build_properties
    option_text = []
    @properties.each do |key, value|
      option_text << "/p:#{key}\=\"#{value}\""
    end
    option_text.join(" ")
  end

  def build_switches
    switch_text = []
    @other_switches.each do |key, value|
      switch_text << print_switch(key, value)
    end
    switch_text.join(" ")
  end

  def print_switch(key, value)
    pure_switch?(value) ? "/#{key}" : "/#{key}:\"#{value}\""
  end

  def pure_switch?(value)
    value.is_a?(TrueClass) || value == :true
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
albacore-0.3.6 lib/albacore/msbuild.rb
albacore-1.0.0.rc.2 lib/albacore/msbuild.rb
albacore-1.0.0.rc.1 lib/albacore/msbuild.rb
albacore-0.3.5 lib/albacore/msbuild.rb
albacore-0.3.4 lib/albacore/msbuild.rb
albacore-0.3.3 lib/albacore/msbuild.rb
albacore-0.3.2 lib/albacore/msbuild.rb