sl-feeds/bin/gen_changlog_rss.rb

69 lines
1.9 KiB
Ruby
Executable File

#!/home/vbatts/opt/bin/ruby
require 'logger'
$log = Logger.new(STDERR)
$log.level = Logger::DEBUG
# put this in a loader function, because the
# rss library is SOO SLOW to load. we don't want to load it,
# if the script is going to fail early.
def load_libs()
require 'rubygems'
require 'slackware'
require 'slackware/changelog/rss'
require 'rb-inotify'
end
BASE_URL = "http://slackware.osuosl.org/"
FEEDS_BASE_DIR = "/home/vbatts/public_html/feeds/"
RE_REPO_NAME = Regexp.new(/slackware(\d{2})?-(\d+\.\d+|current)\/(patches)?\/?.*/)
def gen_file(file)
m = RE_REPO_NAME.match file
if m[3].nil?
file_name = "%sslackware%s-%s_ChangeLog.rss" % [FEEDS_BASE_DIR, m[1], m[2]]
else
file_name = "%sslackware%s-%s_%s_ChangeLog.rss" % [FEEDS_BASE_DIR, m[1], m[2], m[3]]
end
if File.exist?(file_name)
if File.mtime(file) < File.mtime(file_name)
printf("%f: INFO: %s is newer than %s\n", Time.now, file, file_name)
end
end
changelog = Slackware::ChangeLog.new(file) #, :version => m[2])
opts = Hash.new
opts[:arch] = m[1] unless m[1].nil?
if m[3].nil?
opts[:url] = "%sslackware%s-%s/ChangeLog.txt" % [BASE_URL, m[1], m[2]]
feed = File.open( "%sslackware%s-%s_ChangeLog.rss" % [FEEDS_BASE_DIR, m[1], m[2]], "w+")
else
opts[:url] = "%sslackware%s-%s/%s/ChangeLog.txt" % [BASE_URL, m[1], m[2], m[3]]
feed = File.open( "%sslackware%s-%s_%s_ChangeLog.rss" % [FEEDS_BASE_DIR, m[1], m[2], m[3]], "w+")
end
changelog.parse
printf("%f: INFO: generating feed: %s\n", Time.now.to_f, feed.path)
feed << changelog.to_rss(opts)
feed.close
changelog = nil
end
if ARGV.count == 0
$log.error("#{Time.now}: ERROR: ChangeLog.txt files must be passed\n")
exit(2)
else
load_libs()
for file in ARGV
if File.exist?(file)
gen_file(file)
else
$log.warn("#{Time.now}: WARN: #{file} does not exist\n")
end
end
end
# vim: set sts=2 sw=2 et ai: