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.cxx35
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 ())