diff options
Diffstat (limited to 'brep/package-version-details.cxx')
-rw-r--r-- | brep/package-version-details.cxx | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/brep/package-version-details.cxx b/brep/package-version-details.cxx index 71559b9..a4fa95a 100644 --- a/brep/package-version-details.cxx +++ b/brep/package-version-details.cxx @@ -11,6 +11,7 @@ #include <xml/serializer> +#include <odb/session.hxx> #include <odb/database.hxx> #include <odb/transaction.hxx> @@ -63,7 +64,7 @@ namespace brep } assert (i != rq.path ().rend ()); - const string& n (*i); + const string& n (*i); // Package name. params::package_version_details pr; @@ -120,6 +121,7 @@ namespace brep bool not_found (false); shared_ptr<package> p; + session sn; transaction t (db_->begin ()); try @@ -153,8 +155,6 @@ namespace brep const string du (p->internal_repository.load ()->location.string () + "/" + p->location->string ()); - t.commit (); - s << TABLE(CLASS="proplist", ID="version") << TBODY @@ -209,7 +209,32 @@ namespace brep if (&d != &da[0]) s << " | "; - s << d; // @@ Should it be a link ? + shared_ptr<package> p (d.package.load ()); + string en (mime_url_encode (p->id.name)); + + if (p->internal_repository != nullptr) + 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; + + if (d.constraint) + { + s << ' '; + + if (p->internal_repository != nullptr) + s << A + << HREF << "/go/" << en << "/" << p->version.string () << ~HREF + << *d.constraint + << ~A; + else + // @@ Refer to package repository URL when supported in + // repository manifest. + // + s << *d.constraint; + } } s << ~SPAN @@ -222,6 +247,8 @@ namespace brep << ~TABLE; } + t.commit (); + const auto& rt (p->requirements); if (!rt.empty ()) |