class Physique::PublishNugetsTasksBuilder

Public Instance Methods

build_tasks() click to toggle source
# File lib/physique/task_builders/publish_nugets.rb, line 88
def build_tasks
  @options = solution.publish_nugets
  return if @options.nil?

  namespace :nuget do
    add_package_nugets_task
    add_publish_nugets_task
    add_publish_nugets_local_task
  end

  if @options.alias_tasks
    add_task_aliases
  end
end

Private Instance Methods

add_package_nugets_task() click to toggle source
# File lib/physique/task_builders/publish_nugets.rb, line 105
def add_package_nugets_task
  desc 'Package all nugets'
  nugets_pack :package => [ :versionizer, :test ] do |p|
    ensure_output_location solution.nuget.build_location

    p.configuration = solution.compile.configuration
    p.out           = solution.nuget.build_location
    p.exe           = solution.nuget.exe
    p.files         = @options.project_files
    p.gen_symbols   if @options.gen_symbols
    p.with_metadata do |m|
      @options.metadata.set_fields.each do |attr|
        eval "m.#{attr}= @options.metadata.#{attr}"
      end
    end
  end
end
add_publish_nugets_local_task() click to toggle source
# File lib/physique/task_builders/publish_nugets.rb, line 145
def add_publish_nugets_local_task
  local_path = @options.local_path

  namespace :publish do
    desc 'Copy nuget packages to local path'
    task :local => [ 'nuget:package' ] do
      ensure_output_location local_path
      build_location = solution.nuget.build_location.gsub('\\', '/')
      FileUtils.cp FileList["#{build_location}/*"], local_path
    end
  end
end
add_publish_nugets_task() click to toggle source
# File lib/physique/task_builders/publish_nugets.rb, line 123
def add_publish_nugets_task
  desc 'Publish nuget packages to feed'
  task :publish => [ 'nuget:package' ] do
    default_feed = @options.feeds.select {|f| f.name = 'default'}.first
    api_key = default_feed.api_key

    raise ArgumentError, 'You must specify an :api_key to connect to the server' if api_key.blank?

    nuget_project_names.each do |p|
      sh nuget_publish_command(p, 'nupkg', default_feed.feed_url, api_key)

      if @options.gen_symbols
        sh nuget_publish_command(p, 'symbols.nupkg', default_feed.symbols_feed_url, api_key)
      end
    end
  end
end
add_task_aliases() click to toggle source
# File lib/physique/task_builders/publish_nugets.rb, line 164
def add_task_aliases
  desc 'Package all nugets'
  task :package => [ 'nuget:package' ]

  desc 'Publish nuget packages to feed'
  task :publish => [ 'nuget:publish' ]
end
nuget_project_names() click to toggle source
# File lib/physique/task_builders/publish_nugets.rb, line 158
def nuget_project_names
  Set.new(@options.project_files.
        map { |f| Albacore::Project.new f }.
        map { |p| p.name })
end
nuget_publish_command(name, extension, feed, api_key) click to toggle source
# File lib/physique/task_builders/publish_nugets.rb, line 141
def nuget_publish_command(name, extension, feed, api_key)
  "#{solution.nuget.exe} push #{solution.nuget.build_location}/#{name}.#{@options.metadata.version}.#{extension} #{api_key} -Source #{feed}"
end