diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2015-11-12 17:25:36 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2015-11-16 16:41:50 +0200 |
commit | 96281a6c4f818311a6df90c0d8b8f537a61e1090 (patch) | |
tree | d0c0ccacda5ccfb94b98d018abb273b554eb2f77 /brep | |
parent | e80ebd1c1a6fe7749c1565c4a9e2fccaa07d5d95 (diff) |
Add url, email, summary, description members to the repository class
Diffstat (limited to 'brep')
-rw-r--r-- | brep/package | 15 | ||||
-rw-r--r-- | brep/package-version-details.cxx | 43 | ||||
-rw-r--r-- | brep/package.cxx | 20 | ||||
-rw-r--r-- | brep/page.cxx | 21 |
4 files changed, 71 insertions, 28 deletions
diff --git a/brep/package b/brep/package index 8fc6a43..f56906a 100644 --- a/brep/package +++ b/brep/package @@ -14,6 +14,7 @@ #include <cstddef> // size_t #include <utility> // move() #include <cstdint> // uint16 +#include <ostream> #include <odb/core.hxx> #include <odb/forward.hxx> // database @@ -261,6 +262,9 @@ namespace brep #pragma db member(package) column("") not_null }; + std::ostream& + operator<< (std::ostream&, const dependency&); + #pragma db value class dependency_alternatives: public std::vector<dependency> { @@ -310,6 +314,14 @@ namespace brep repository_location location; std::string display_name; + optional<std::string> url; + + // Set only for internal repositories. + // + optional<std::string> email; + optional<std::string> summary; + optional<std::string> description; + // Non empty for internal repositories and external ones with a filesystem // path location. // @@ -428,8 +440,7 @@ namespace brep requirements_type requirements; odb::lazy_shared_ptr<repository_type> internal_repository; - // Path to the package file. Set only for packages present in internal - // repository. + // Path to the package file. Set only for internal packages. // optional<path> location; 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 diff --git a/brep/package.cxx b/brep/package.cxx index 853d484..d99819c 100644 --- a/brep/package.cxx +++ b/brep/package.cxx @@ -6,6 +6,7 @@ #include <utility> // move() #include <cassert> +#include <ostream> #include <odb/database.hxx> @@ -24,6 +25,17 @@ namespace brep return package.object_id ().name; } + ostream& + operator<< (ostream& o, const dependency& d) + { + o << d.name (); + + if (d.constraint) + o << ' ' << *d.constraint; + + return o; + } + // package // package:: @@ -120,19 +132,19 @@ namespace brep // repository:: repository (repository_location l, string d, dir_path p) - : location (move (l)), + : name (l.canonical_name ()), + location (move (l)), display_name (move (d)), local_path (move (p)), internal (true) { - name = location.canonical_name (); } repository:: repository (repository_location l) - : location (move (l)), + : name (l.canonical_name ()), + location (move (l)), internal (false) { - name = location.canonical_name (); } } diff --git a/brep/page.cxx b/brep/page.cxx index 481825b..81a7de5 100644 --- a/brep/page.cxx +++ b/brep/page.cxx @@ -284,11 +284,24 @@ namespace brep shared_ptr<package> p (da.package.load ()); - if (p->internal ()) - s << A << HREF << "/go/" << mime_url_encode (n) << ~HREF << n << ~A; + assert (p->internal () || !p->other_repositories.empty ()); + shared_ptr<repository> r ( + p->internal () + ? p->internal_repository.load () + : p->other_repositories[0].load ()); + + optional<string> u (r->url); // Repository web interface URL. + if (!u && p->internal ()) + u = ""; // Make URL to reference the current web interface. + + if (u) + s << A + << HREF << *u << "/go/" << mime_url_encode (n) << ~HREF + << n + << ~A; else - // @@ Refer to package repository URL when supported in repository - // manifest. + // Display the dependency as a plain text in no repository URL + // available. // s << n; } |