Sha256: 42268d5e476bb8bb223d5aadacc50d8f022ae764d9ca34392eba0ae3e4abc32f

Contents?: true

Size: 1.19 KB

Versions: 4

Compression:

Stored size: 1.19 KB

Contents

require 'rake/tasklib'

module Rake::Funnel::Tasks
  class MSDeploy < Rake::TaskLib
    include Rake::Funnel::Support
    include Rake::Funnel::Support::MSDeploy

    attr_accessor :name, :msdeploy, :args, :log_file

    def initialize(*args, &task_block)
      setup_ivars(args)

      define(args, &task_block)
    end

    private
    def setup_ivars(args)
      @name = args.shift || :msdeploy

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

    def define(args, &task_block)
      desc 'Deploy application' unless Rake.application.last_description

      task(name, *args) do |_, task_args|
        task_block.call(*[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

    def quote(value)
      value = value.gsub(/"/, '""') if value.kind_of?(String)
      return %Q{"#{value}"} if value =~ /\s/
      value
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rake-funnel-0.3.2.pre lib/rake/funnel/tasks/msdeploy.rb
rake-funnel-0.3.1.pre lib/rake/funnel/tasks/msdeploy.rb
rake-funnel-0.3.0.pre lib/rake/funnel/tasks/msdeploy.rb
rake-funnel-0.2.0.pre lib/rake/funnel/tasks/msdeploy.rb