class Buildr::Doc::VScaladoc

Constants

VERSION

Public Class Methods

dependencies() click to toggle source
# File lib/buildr/scala/doc.rb, line 86
def dependencies
  case
    when Buildr::Scala.version?("2.7")
      [ "org.scala-tools:vscaladoc:jar:#{VERSION}" ]
    else
      warn "VScalaDoc not supported for Scala 2.8+"
      []
  end
end

Public Instance Methods

generate(sources, target, options = {}) click to toggle source
# File lib/buildr/scala/doc.rb, line 101
def generate(sources, target, options = {})
  cmd_args = [ '-d', target, (trace?(:vscaladoc) ? '-verbose' : ''),
    '-sourcepath', project.compile.sources.join(File::PATH_SEPARATOR) ]
  options.reject { |key, value| [:sourcepath, :classpath].include?(key) }.
    each { |key, value| value.invoke if value.respond_to?(:invoke) }.
    each do |key, value|
      case value
      when true, nil
        cmd_args << "-#{key}"
      when false
        cmd_args << "-no#{key}"
      when Hash
        value.each { |k,v| cmd_args << "-#{key}" << k.to_s << v.to_s }
      else
        cmd_args += Array(value).map { |item| ["-#{key}", item.to_s] }.flatten
      end
    end
  [:sourcepath, :classpath].each do |option|
    Array(options[option]).flatten.tap do |paths|
      cmd_args << "-#{option}" << paths.flatten.map(&:to_s).join(File::PATH_SEPARATOR) unless paths.empty?
    end
  end
  cmd_args += sources.flatten.uniq
  unless Buildr.application.options.dryrun
    info "Generating VScaladoc for #{project.name}"
    trace (['vscaladoc'] + cmd_args).join(' ')
    Java.load
    Java.org.scala_tools.vscaladoc.Main.main(cmd_args.to_java(Java.java.lang.String)) == 0 or
      fail 'Failed to generate VScaladocs, see errors above'
  end
end