<%

pkg, pkg_set = object.autobuild, object.package_set
vcs_def = object.vcs
set_vcs_def = pkg_set.vcs
if pkg.description
    authors = pkg.description.each_author.
        map { |name, email| "#{name}/#{HTML.obscure_email(email)}" }.
        join(", ")
    license = pkg.description.license
    urls = [pkg.description.url].
        map { |s| "<a href=\"#{s}\">#{s}</a>" }.
        join(" ")
end

api_url = api_url(pkg)

all_opt_deps = pkg.optional_dependencies.to_set
pkg_opt_deps, ospkg_opt_deps, disabled = pkg.partition_optional_dependencies
pkg_deps = pkg.dependencies.
    find_all { |dep_name| !all_opt_deps.include?(dep_name) }.
    sort.map do |name|
        if !(package = info.manifest.package(name))
            raise ArgumentError, "cannot find definition for package #{name}"
        end
        page.link_to(package)
    end
ospkg_deps = pkg.os_packages.
    find_all { |dep_name| !all_opt_deps.include?(dep_name) }.
    sort.map { |name| page.link_to(OSPackage.new(name, info.osdeps.all_definitions[name])) }

pkg_opt_deps = pkg_opt_deps.
    sort.map do |name|
        if !(package = info.manifest.package(name))
            raise ArgumentError, "cannot find definition for package #{name}"
        end
        page.link_to(package)
    end
ospkg_opt_deps = ospkg_opt_deps.
    sort.map do |name|
        page.link_to(OSPackage.new(name, info.osdeps.all_definitions[name]))
    end

pkg_deps, ospkg_deps, pkg_opt_deps, ospkg_opt_deps = [pkg_deps, ospkg_deps, pkg_opt_deps, ospkg_opt_deps].
    map do |array|
        if array.empty? then 'none'
        else array.join(", ")
        end
    end

%>

<h2>Package Info</h2> <ul class=“body-header-list”>

<%= page.render_item('name', pkg.name) %>
<%= page.render_item('authors', authors || '') %>
<%= page.render_item('license', license || '') %>
<%= page.render_item('URL', urls || '') %>
<%= render_item("<a href=\"#{api_url}\">API Documentation</a>") if api_url %>
<%= page.render_item('mandatory dependencies', pkg_deps) %>
<%= page.render_item('optional dependencies', pkg_opt_deps) %>
<%= page.render_item('mandatory OS dependencies', ospkg_deps) %>
<%= page.render_item('optional OS dependencies', ospkg_opt_deps) %>

</ul>

<h2>Import Info</h2> <ul class=“body-header-list”>

<% doc = "in autoproj, a package set is used to declare packages so that they can be imported and built. To be able to build a package, one should therefore add the relevant package set to its build configuration by copy/pasting one of the following blocks (either the Rock short definition or the Autoproj definition) into the package_sets section of autoproj/manifest. See also <a href=\"/documentation/tutorials/190_installing_packages.html\">this tutorial</a>." %>
<%= page.render_item('defined in package set', page.link_to(pkg_set) + HTML.help_tip(doc) + render_vcs(set_vcs_def)) %>
<%= page.render_item('import info', render_vcs(vcs_def)) %>

</ul>