Sha256: b7d847e582394f8c4e6cbbde5a7b5318ee0e7f225cb6a1dd562fe455331bdc04

Contents?: true

Size: 1.28 KB

Versions: 14

Compression:

Stored size: 1.28 KB

Contents

module Rake
  module Funnel
    module Integration
      module TeamCity
        class ServiceMessages
          class << self
            def method_missing(method, *args, &_block)
              return unless Rake::Funnel::Integration::TeamCity.running?

              message_name = method.camelize
              publish message_name, args[0]
            end

            private
            def publish(message_name, args)
              args = [message_name] << escaped_array_of(args)
              args = args.flatten.reject(&:nil?)

              puts "##teamcity[#{args.join(' ')}]"
            end

            def escape(string)
              string
                .to_s
                .gsub(/\|/, '||')
                .gsub(/'/, "|'")
                .gsub(/\r/, '|r')
                .gsub(/\n/, '|n')
                .gsub(/\u0085/, '|x')
                .gsub(/\u2028/, '|l')
                .gsub(/\u2029/, '|p')
                .gsub(/\[/, '|[')
                .gsub(/\]/, '|]')
            end

            def escaped_array_of(args)
              return [] if args.nil?

              return "'#{escape(args)}'" unless args.is_a?(Hash)
              args.map { |key, value| "#{key.camelize}='#{escape(value.to_s)}'" }
            end
          end
        end
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
rake-funnel-0.18.0 lib/rake/funnel/integration/teamcity/service_messages.rb
rake-funnel-0.17.0 lib/rake/funnel/integration/teamcity/service_messages.rb
rake-funnel-0.16.1 lib/rake/funnel/integration/teamcity/service_messages.rb
rake-funnel-0.16.0 lib/rake/funnel/integration/teamcity/service_messages.rb
rake-funnel-0.15.0.pre lib/rake/funnel/integration/teamcity/service_messages.rb
rake-funnel-0.14.0.pre lib/rake/funnel/integration/teamcity/service_messages.rb
rake-funnel-0.13.0.pre lib/rake/funnel/integration/teamcity/service_messages.rb
rake-funnel-0.12.0.pre lib/rake/funnel/integration/teamcity/service_messages.rb
rake-funnel-0.11.0.pre lib/rake/funnel/integration/teamcity/service_messages.rb
rake-funnel-0.10.0.pre lib/rake/funnel/integration/teamcity/service_messages.rb
rake-funnel-0.9.1.pre lib/rake/funnel/integration/teamcity/service_messages.rb
rake-funnel-0.9.0.pre lib/rake/funnel/integration/teamcity/service_messages.rb
rake-funnel-0.8.0.pre lib/rake/funnel/integration/teamcity/service_messages.rb
rake-funnel-0.7.0.pre lib/rake/funnel/integration/teamcity/service_messages.rb