Sha256: f7eae69ee1e6592875639d1c5dace3fb43bd148d207f7b5c555c717b3647ae44

Contents?: true

Size: 1.41 KB

Versions: 6

Compression:

Stored size: 1.41 KB

Contents

module Capistrano
  class Configuration
    class Servers
      class HostFilter

        def initialize(available)
          @available = available
        end

        def self.for(available)
          new(available).hosts
        end

        def hosts
          if host_filter.any?
            @available.select { |server| host_filter.include? server.hostname }
          else
            @available
          end
        end

        private

        def filter
          if host_filter.any?
            host_filter
          else
            @available
          end
        end

        def host_filter
          env_filter | configuration_filter
        end

        def configuration_filter
          ConfigurationFilter.new.hosts
        end

        def env_filter
          EnvFilter.new.hosts
        end

        class ConfigurationFilter

          def hosts
            if filter
              Array(filter.fetch(:hosts, []))
            else
              []
            end
          end

          def config
            Configuration.env
          end

          def filter
            config.fetch(:filter) || config.fetch(:select)
          end
        end


        class EnvFilter

          def hosts
            if filter
              filter.split(',')
            else
              []
            end
          end

          def filter
            ENV['HOSTS']
          end
        end

      end
    end
  end
end

Version data entries

6 entries across 4 versions & 2 rubygems

Version Path
honeybadger-2.4.0 vendor/gems/ruby/1.9.1/gems/capistrano-3.2.1/lib/capistrano/configuration/servers/host_filter.rb
honeybadger-2.4.0 vendor/gems/ruby/2.1.0/gems/capistrano-3.2.1/lib/capistrano/configuration/servers/host_filter.rb
honeybadger-2.4.0 vendor/gems/ruby/2.2.0/gems/capistrano-3.2.1/lib/capistrano/configuration/servers/host_filter.rb
capistrano-3.2.1 lib/capistrano/configuration/servers/host_filter.rb
capistrano-3.2.0 lib/capistrano/configuration/servers/host_filter.rb
capistrano-3.1.0 lib/capistrano/configuration/servers/host_filter.rb