+
+ task :upload do
+ if File.exists? 'doc/gh-pages'
+ Dir.chdir 'doc/gh-pages' do
+ sh "git checkout gh-pages"
+ end
+ Dir.glob("doc/*.{html,css}").each do |file|
+ FileUtils.cp file, 'doc/gh-pages'
+ end
+ Dir.glob("doc/images/*").each do |file|
+ FileUtils.cp file, 'doc/gh-pages/images'
+ end
+ Dir.glob("doc/stylesheets/*.css").each do |file|
+ FileUtils.cp file, 'doc/gh-pages/stylesheets'
+ end
+ curRev = `git rev-parse --verify HEAD`.chomp()
+ expRev = IO.read('doc/html-revision').chomp()
+ if curRev != expRev
+ raise ("The HTML rev: #{expRev},\n" +
+ "current rev: #{curRev}!\n")
+ end
+ if !system "git diff-index --quiet HEAD"
+ system "git status --untracked-files=no"
+ raise "You have uncommitted changes!"
+ end
+ Dir.chdir 'doc/gh-pages' do
+ sh "git commit -a -m 'Automatic documentation update.\n\n" +
+ "From #{curRev.chomp()}'"
+ sh "git push"
+ end
+ end
+ end