mirror of
https://github.com/capistrano/capistrano
synced 2023-03-27 23:21:18 -04:00
Fix host filter regression
This commit is contained in:
parent
7c061dbab0
commit
5388442ea0
4 changed files with 33 additions and 25 deletions
|
@ -1,10 +1,6 @@
|
|||
require 'capistrano/configuration/regex_filter'
|
||||
|
||||
module Capistrano
|
||||
class Configuration
|
||||
class HostFilter
|
||||
include RegexFilter
|
||||
|
||||
def initialize values
|
||||
av = Array(values).dup
|
||||
av.map! { |v| (v.is_a?(String) && v =~ /^(?<name>[-A-Za-z0-9.]+)(,\g<name>)*$/) ? v.split(',') : v }
|
||||
|
@ -15,6 +11,20 @@ module Capistrano
|
|||
def filter servers
|
||||
Array(servers).select { |s| @rex.match s.to_s }
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def regex_matcher(values)
|
||||
values.map! do |v|
|
||||
case v
|
||||
when Regexp then v
|
||||
else
|
||||
vs = v.to_s
|
||||
vs =~ /^[-A-Za-z0-9.]+$/ ? vs : Regexp.new(vs)
|
||||
end
|
||||
end
|
||||
Regexp.union values
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
module Capistrano
|
||||
class Configuration
|
||||
module RegexFilter
|
||||
def regex_matcher values
|
||||
av = values.map do |v|
|
||||
case v
|
||||
when Regexp then v
|
||||
else
|
||||
vs = v.to_s
|
||||
vs =~ %r{^/(.+)/$} ? Regexp.new($1) : %r{^#{vs}$}
|
||||
end
|
||||
end
|
||||
Regexp.union av
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,10 +1,6 @@
|
|||
require 'capistrano/configuration/regex_filter'
|
||||
|
||||
module Capistrano
|
||||
class Configuration
|
||||
class RoleFilter
|
||||
include RegexFilter
|
||||
|
||||
def initialize values
|
||||
av = Array(values).dup
|
||||
av.map! { |v| v.is_a?(String) ? v.split(',') : v }
|
||||
|
@ -15,6 +11,20 @@ module Capistrano
|
|||
def filter servers
|
||||
Array(servers).select { |s| s.is_a?(String) ? false : s.roles.any? { |r| @rex.match r } }
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def regex_matcher(values)
|
||||
values.map! do |v|
|
||||
case v
|
||||
when Regexp then v
|
||||
else
|
||||
vs = v.to_s
|
||||
vs =~ %r{^/(.+)/$} ? Regexp.new($1) : %r{^#{vs}$}
|
||||
end
|
||||
end
|
||||
Regexp.union values
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -44,6 +44,11 @@ module Capistrano
|
|||
it_behaves_like 'it filters hosts correctly', %w{server1 server3}
|
||||
end
|
||||
|
||||
context 'with a regexp with line boundaries' do
|
||||
let(:values) { '^server' }
|
||||
it_behaves_like 'it filters hosts correctly', %w{server1 server2 server3 server4 server5}
|
||||
end
|
||||
|
||||
context 'with a regexp with a comma' do
|
||||
let(:values) { 'server\d{1,3}$' }
|
||||
it_behaves_like 'it filters hosts correctly', %w{server1 server2 server3 server4 server5}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue