lib/reviewlette/vacations.rb in reviewlette-0.0.6 vs lib/reviewlette/vacations.rb in reviewlette-0.0.7
- old
+ new
@@ -1,38 +1,30 @@
require 'net/telnet'
-module Reviewlette
- class Vacations
+class Vacations
- def self.find_vacations(username)
- vacations = []
- tn = Net::Telnet.new('Host' => 'present.suse.de', 'Port' => 9874, 'Binmode' => false)
- collect = false
- tn.cmd(username) do |data|
- data.split("\n").each do |l|
- collect = true if l =~ /^Absence/
- next unless collect
- if l[0,1] == "-"
- collect = false
- next
- end
- dates = []
- l.split(" ").each do |date|
- unless date =~ /#{Time.now.year}/
- next
- end
- dates.push(date)
- end
- case dates.size
- when 1
- vacations.push("#{dates[0]}")
- when 2
- vacations.push("#{dates[0]} - #{dates[1]}")
- else
- end
+ def self.find_vacations(username)
+ vacations = []
+ tn = Net::Telnet.new('Host' => 'present.suse.de', 'Port' => 9874, 'Binmode' => false)
+ tn.cmd("#{username}").split("\n").each do |line|
+ if line =~ /\S{3} #{Time.now.year}-\d\d-\d\d/
+ dates = []
+ line.split(" ").each do |date|
+ dates.push(date) if date =~ /#{Time.now.year}-\d\d-\d\d/
end
+ dates[1] = dates[0] unless dates[1]
+ vacations.push(Date.parse(dates[0])..Date.parse(dates[1]))
end
- tn.close
- vacations
end
+ tn.close
+ vacations
end
-end
\ No newline at end of file
+
+ def self.members_on_vacation
+ members_on_vacation = MEMBERS_CONFIG['members'].collect do |member|
+ username = member['suse_username']
+ username if (username && Vacations.find_vacations(username).any? { |v| v === Date.today })
+ end
+ members_on_vacation.compact
+ end
+
+end