aboutsummaryrefslogtreecommitdiff
path: root/brep/package-version-details.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'brep/package-version-details.cxx')
-rw-r--r--brep/package-version-details.cxx43
1 files changed, 25 insertions, 18 deletions
diff --git a/brep/package-version-details.cxx b/brep/package-version-details.cxx
index 9c90b8d..ce25a44 100644
--- a/brep/package-version-details.cxx
+++ b/brep/package-version-details.cxx
@@ -212,29 +212,36 @@ namespace brep
shared_ptr<package> p (d.package.load ());
string en (mime_url_encode (p->id.name));
- if (p->internal ())
- s << A << HREF << "/go/" << en << ~HREF << p->id.name << ~A;
- else
- // @@ Refer to package repository URL when supported in repository
- // manifest.
- //
- s << p->id.name;
+ assert (p->internal () || !p->other_repositories.empty ());
+ shared_ptr<repository> r (
+ p->internal ()
+ ? p->internal_repository.load ()
+ : p->other_repositories[0].load ());
- if (d.constraint)
- {
- s << ' ';
+ optional<string> u (r->url); // Repository web interface URL.
+ if (!u && p->internal ())
+ u = ""; // Make URL to reference the current web interface.
- if (p->internal ())
- s << A
- << HREF << "/go/" << en << "/" << p->version.string () << ~HREF
+ if (u)
+ {
+ s << A << HREF << *u << "/go/" << en << ~HREF << p->id.name << ~A;
+
+ if (d.constraint)
+ {
+ s << ' '
+ << A
+ << HREF
+ << *u << "/go/" << en << "/" << p->version.string ()
+ << ~HREF
<< *d.constraint
<< ~A;
- else
- // @@ Refer to package repository URL when supported in
- // repository manifest.
- //
- s << *d.constraint;
+ }
}
+ else
+ // Display the dependency as a plain text in no repository URL
+ // available.
+ //
+ s << d;
}
s << ~SPAN