class Rake::Funnel::Tasks::MSDeploy

Attributes

args[RW]
log_file[RW]
msdeploy[RW]
name[RW]

Public Class Methods

new(*args, &task_block) click to toggle source
# File lib/rake/funnel/tasks/msdeploy.rb, line 14
def initialize(*args, &task_block)
  setup_ivars(args)

  define(args, &task_block)
end

Private Instance Methods

define(args) { |*[self, task_args].slice(0, arity)| ... } click to toggle source
# File lib/rake/funnel/tasks/msdeploy.rb, line 30
def define(args, &task_block) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
  desc 'Deploy application' unless Rake.application.last_description

  task(name, *args) do |_, task_args|
    yield(*[self, task_args].slice(0, task_block.arity)) if task_block

    mapper = Mapper.new(:MSDeploy)
    cmd = [quote(msdeploy), mapper.map(@args)]
          .flatten
          .join(' ')

    RegistryPatch.new do
      shell(cmd, log_file: log_file, error_lines: /^(error|[\w\.]*exception)/i)
    end
  end

  self
end
quote(value) click to toggle source
# File lib/rake/funnel/tasks/msdeploy.rb, line 49
def quote(value)
  value = value.gsub(/"/, '""') if value.is_a?(String)
  return %("#{value}") if value =~ /\s/

  value
end
setup_ivars(args) click to toggle source
# File lib/rake/funnel/tasks/msdeploy.rb, line 22
def setup_ivars(args)
  @name = args.shift || :msdeploy

  @msdeploy = 'msdeploy'
  @args = {}
  @log_file = "#{@name}.log"
end