Sha256: a50e7ba85c1433cd471ba1c72591db8106d9c846290be956c635db37cc15eefa

Contents?: true

Size: 888 Bytes

Versions: 1

Compression:

Stored size: 888 Bytes

Contents

require "capistrano/configuration"
require "capistrano/configuration/empty_filter"
require "capistrano/configuration/host_filter"
require "capistrano/configuration/null_filter"
require "capistrano/configuration/role_filter"

module Capistrano
  class Configuration
    class Filter
      def initialize(type, values=nil)
        raise "Invalid filter type #{type}" unless [:host, :role].include? type
        av = Array(values)
        @strategy = case
                    when av.empty? then EmptyFilter.new
                    when av.include?(:all), av.include?("all") then NullFilter.new
                    when type == :host then HostFilter.new(values)
                    when type == :role then RoleFilter.new(values)
                    else NullFilter.new
                    end
      end

      def filter(servers)
        @strategy.filter servers
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
capistrano-3.5.0 lib/capistrano/configuration/filter.rb