puppet/avahi/lib/puppet/parser/functions/avahi_service_port.rb

26 lines
483 B
Ruby

module Puppet::Parser::Functions
newfunction(:avahi_service_port, :type => :rvalue) do |args|
type, name, proto = /^_([^\.]*)\._([^\.]*)$/.match(args[0]).to_a
port = nil
File.open('/etc/services', 'r') do |fd|
while (line = fd.gets)
begin
port = /^#{name}[ \t]+(\d+)\/#{proto}.*/.match(line)[1]
break
rescue
nil
end
end
end
if not port
raise Puppet::ParseError, 'Failed to get port for service %s' % type
end
port
end
end