diff options
author | Benjamin Kellermann <Benjamin.Kellermann@gmx.de> | 2008-10-27 18:19:43 +0100 |
---|---|---|
committer | Benjamin Kellermann <Benjamin.Kellermann@gmx.de> | 2008-10-27 18:19:43 +0100 |
commit | 3b87070d5de677b9d1dcb1afa56439cb2bdd782e (patch) | |
tree | 58b1dd527f22c751c979f75f29c9cbdee17f4359 | |
parent | 45e436c9a88291c0bb59cb41598a7720a5369902 (diff) |
improved feed support
-rwxr-xr-x | atom.cgi | 42 |
1 files changed, 23 insertions, 19 deletions
@@ -4,8 +4,19 @@ require "atom" require "yaml" require "cgi" +def readhistory dir + log = `export LC_ALL=de_DE.UTF-8; bzr log -r -10.. #{dir}`.split("-"*60) + log.collect!{|s| s.scan(/\nrevno: (.*)\ncommitter.*\n.*\ntimestamp: (.*)\nmessage:\n (.*)/).flatten} + log.shift + log.collect!{|r,t,c| [r.to_i,DateTime.parse(t),c]} +end + + + cgi = CGI.new +SITEURL = "http://#{cgi.server_name}#{cgi.script_name.gsub(/atom.cgi$/,"")}" + feed = Atom::Feed.new if File.exist?("data.yaml") olddir = File.expand_path(".") @@ -23,17 +34,13 @@ if File.exist?("data.yaml") feed.authors << Atom::Person.new(:name => 'dudle automatic notificator') - log = `export LC_ALL=de_DE.UTF-8; bzr log --forward`.split("-"*60) - log.collect!{|s| s.scan(/\nrevno:.*\ncommitter.*\n.*\ntimestamp: (.*)\nmessage:\n (.*)/).flatten} - log.shift - log.collect!{|t,c| [DateTime.parse(t),c]} - - log.each_with_index {|l,i| + log = readhistory "." + log.each {|rev,time,comment| feed.entries << Atom::Entry.new do |e| - e.title = l[1] - e.links << Atom::Link.new(:href => "http://#{cgi.server_name}#{cgi.script_name.gsub(/atom.cgi$/,"")}?revision=#{i+1}") - e.id = "urn:#{poll.class}:#{poll.name}:rev=#{i+1}" - e.updated = l[0] + e.title = comment + e.links << Atom::Link.new(:href => "#{SITEURL}?revision=#{rev}") + e.id = "urn:#{poll.class}:#{poll.name}:rev=#{rev}" + e.updated = time end } @@ -55,17 +62,14 @@ else feed.updated = File.new("#{site}/data.yaml").mtime end - log = `export LC_ALL=de_DE.UTF-8; bzr log --forward #{site}`.split("-"*60) - log.collect!{|s| s.scan(/\nrevno:.*\ncommitter.*\n.*\ntimestamp: (.*)\nmessage:\n (.*)/).flatten} - log.shift - log.collect!{|t,c| [DateTime.parse(t),c]} - log.each_with_index {|l,i| + log = readhistory(site) + log.each {|rev,time,comment| feed.entries << Atom::Entry.new do |e| e.title = site - e.summary = l[1] - e.links << Atom::Link.new(:href => site) - e.id = "urn:dudle:main:#{site}:rev=#{i+1}" - e.updated = l[0] + e.summary = comment + e.links << Atom::Link.new(:href => "#{SITEURL}#{site}/?revision=#{rev}") + e.id = "urn:dudle:main:#{site}:rev=#{rev}" + e.updated = time end } end |