#!/usr/bin/env ruby require 'cgi' $PAGE_BASE = "http://tilde.town/~dzwdz/golf" $LOCAL_BASE = "/home/dzwdz/public_html/golf" $HTML_HEAD, $HTML_FOOT = File.read('template.html').split('/snip/') def all_files(event) `ls -d /home/*/golf/#{event}/*` .lines .map(&:strip) end def submissions(event) all_files(event) .filter {|l| not l.end_with? '.hint'} end def challenge_page(event) `mkdir -p #{$LOCAL_BASE}/#{event}/` file = File.new("#{$LOCAL_BASE}/#{event}/index.html", 'w') file.write $HTML_HEAD # challenge info file.write "
" file.write "

#{event}

" file.write File.read("challenges/#{event}/desc.html") file.write "
" # solutions file.write "
" submissions(event) .each do |path| file.write "
" file.write "

#{path.split('.')[-1]}, #{File.size path} bytes

" file.write "
#{CGI::escapeHTML File.read path}
" file.write "

#{path.sub('/home/', '~')}

" file.write "
" end file.write "
" file.write $HTML_FOOT file.close end def static_page(path) File.open "#{$LOCAL_BASE}/#{path}", "w" do |f| f.write $HTML_HEAD f.write File.read path f.write $HTML_FOOT end end Dir['challenges/*'].each do |path| name = path.split('/', 2)[-1] challenge_page name end static_page 'index.html' static_page 'how.html' `cp style.css #{$LOCAL_BASE}/`