#!/usr/bin/env ruby require 'find' require 'fileutils' rfdir = 'rubyforge.org:/var/www/gforge-projects/rainbows/' newbase = 'https://bogomips.org/rainbows/' refresh = '' old = 'rf.old' new = 'rf.new' cmd = %W(rsync -av #{rfdir} #{old}/) unless File.directory?(old) system(*cmd) or abort "#{cmd.inspect} failed: #$?" end Find.find(old) do |path| path =~ /\.html\z/ or next data = File.read(path) tmp = path.split(%r{/}) tmp.shift == old or abort "BUG" dst = "#{new}/#{tmp.join('/')}" tmp[-1] = '' if tmp[-1] == "index.html" url = "#{newbase}#{tmp.join('/')}" meta = sprintf(refresh, url) data.sub!(/(
]*>)/i, "#$1#{meta}") data.sub!(/(]*>)/i, "#{$1}Redirecting to #{url} ...