# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with this # work for additional information regarding copyright ownership. The ASF # licenses this file to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations under # the License. begin gem 'rdoc' require 'rdoc/task' desc 'Creates a symlink to rake' 's lib directory to support combined rdoc generation' file 'rake/lib' do rake_path = $LOAD_PATH.find { |p| File.exist? File.join(p, 'rake.rb') } mkdir_p 'rake' File.symlink(rake_path, 'rake/lib') end desc 'Generate RDoc documentation in rdoc/' RDoc::Task.new :rdoc do |rdoc| rdoc.rdoc_dir = 'rdoc' rdoc.title = spec.name rdoc.options = spec.rdoc_options.clone rdoc.rdoc_files.include('lib/**/*.rb') rdoc.rdoc_files.include spec.extra_rdoc_files # include rake source for better inheritance rdoc rdoc.rdoc_files.include('rake/lib/**.rb') end task 'rdoc' => %w(rake/lib) require 'jekylltask' module TocFilter def toc(input) output = "
    " input.scan(/<(h2)(?:>|\s+(.*?)>)([^<]*)<\/\1\s*>/mi).each do |entry| id = (entry[1][/^id=(['"])(.*)\1$/, 2] rescue nil) title = entry[2].gsub(/<(\w*).*?>(.*?)<\/\1\s*>/m, '\2').strip if id output << %{
  1. #{title}
  2. } else output << %{
  3. #{title}
  4. } end end output << '
' output end end Liquid::Template.register_filter(TocFilter) desc 'Generate Buildr documentation in _site/' JekyllTask.new 'jekyll' do |task| task.source = 'doc' task.target = '_site' end if 0 == system('pygmentize -V > /dev/null 2> /dev/null') puts 'Buildr uses the Pygments python library. You can install it by running ' 'sudo easy_install Pygments' ' or ' 'sudo apt-get install python-pygments' '' end desc 'Generate Buildr documentation as buildr.pdf' file 'buildr.pdf' => '_site' do |task| pages = File.read('_site/preface.html').scan(/
  • ['_site', :rdoc, 'buildr.pdf'] do cp_r 'rdoc', '_site' fail 'No RDocs in site directory' unless File.exist?('_site/rdoc/Buildr.html') cp 'CHANGELOG', '_site' open('_site/.htaccess', 'w') do |htaccess| htaccess << %Q{ ForceType 'text/plain; charset=UTF-8' } end cp 'buildr.pdf', '_site' fail 'No PDF in site directory' unless File.exist?('_site/buildr.pdf') puts 'OK' end # Publish prerequisites to Web site. desc "Publish complete web site" task 'publish' => 'site' do target = "people.apache.org:/www/#{spec.name}.apache.org/" puts "Uploading new site to #{target} ..." sh 'rsync', '--progress', '--recursive', '--delete', '_site/', target sh 'ssh', 'people.apache.org', 'chmod', '-f', '-R', 'g+w', "/www/#{spec.name}.apache.org/*" puts 'Done' end # Update HTML + PDF documentation (but not rdoc, changelog etc.) desc "Publish non-release specific documentation to web site" task 'publish-doc' => %w(buildr.pdf _site setup-local-site-svn) do cp 'buildr.pdf', '_site' puts 'Uploading new site ...' sh 'rsync', '--progress', '--recursive', '_site/', 'site' # Note: no --delete task('publish-site-svn').invoke puts 'Done' end task 'publish-site-svn' do sh 'svn', 'add', '--force', 'site' sh 'svn', 'commit', 'site', '-m', 'Publish latest site' end desc 'Checkout or update site to local directory' task 'setup-local-site-svn' do if File.exist?('site') sh 'svn', 'up', 'site' sh 'svn', 'revert', '--recursive', 'site' else sh 'svn', 'co', 'https://svn.apache.org/repos/asf/buildr/site', 'site' end end task 'clobber' do rm_rf '_site' rm_f 'buildr.pdf' rm_f 'prince_errors.log' end rescue Exception => e # The doc tasks do not work on our CI infrastructure with jruby as the native libraries # are not compatible with version of the C++ library we are running there end