summaryrefslogtreecommitdiff
path: root/apt-pkg
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2024-04-22 17:31:46 +0000
committerJulian Andres Klode <jak@debian.org>2024-04-22 17:31:46 +0000
commit20ab001670226e92ca8a74f1e2308197111a8420 (patch)
tree79b91f7e1543fb7a6a1585c0876a58b270448e0c /apt-pkg
parent4e9a9dbf9bd52d38ab5818f3eb32c8189fd25671 (diff)
parent129662acca40d3bd212f19e94db6df9d0ba4ba80 (diff)
Merge branch 'ui-2.9.2' into 'main'
UI changes for 2.9.2 See merge request apt-team/apt!343
Diffstat (limited to 'apt-pkg')
-rw-r--r--apt-pkg/contrib/error.cc21
-rw-r--r--apt-pkg/tagfile.cc32
-rw-r--r--apt-pkg/tagfile.h8
3 files changed, 44 insertions, 17 deletions
diff --git a/apt-pkg/contrib/error.cc b/apt-pkg/contrib/error.cc
index 4715568d0..4eaa3dc52 100644
--- a/apt-pkg/contrib/error.cc
+++ b/apt-pkg/contrib/error.cc
@@ -34,6 +34,7 @@
#include <string>
#include <unistd.h>
+#include <apti18n.h>
/*}}}*/
// Global Error Object /*{{{*/
@@ -254,11 +255,13 @@ void GlobalError::MergeWithStack() {
APT_HIDDEN std::ostream &operator<<(std::ostream &out, GlobalError::Item i)
{
static constexpr auto COLOR_RESET = "\033[0m";
- static constexpr auto COLOR_NOTICE = "\033[33m"; // normal yellow
+ static constexpr auto COLOR_BOLD = "\033[1m"; // bold neutral
+ static constexpr auto COLOR_NOTICE = "\033[1m"; // bold neutral
static constexpr auto COLOR_WARN = "\033[1;33m"; // bold yellow
static constexpr auto COLOR_ERROR = "\033[1;31m"; // bold red
bool use_color = _config->FindB("APT::Color", false);
+ auto out_ver = _config->FindI("APT::Output-Version");
if (use_color)
{
@@ -284,22 +287,26 @@ APT_HIDDEN std::ostream &operator<<(std::ostream &out, GlobalError::Item i)
{
case GlobalError::FATAL:
case GlobalError::ERROR:
- out << 'E';
+ // TRANSLATOR: This is a warning level displayed before the message
+ out << (out_ver < 30 ? "E:" : _("Error:"));
break;
case GlobalError::WARNING:
- out << 'W';
+ // TRANSLATOR: This is a warning level displayed before the message
+ out << (out_ver < 30 ? "W:" : _("Warning:"));
break;
case GlobalError::NOTICE:
- out << 'N';
+ // TRANSLATOR: This is a warning level displayed before the message
+ out << (out_ver < 30 ? "N:" : _("Notice:"));
break;
case GlobalError::AUDIT:
out << 'A';
break;
case GlobalError::DEBUG:
- out << 'D';
+ // TRANSLATOR: This is a warning level displayed before the message
+ out << _("Debug:");
break;
}
- out << ": ";
+ out << " ";
if (use_color)
{
@@ -311,6 +318,8 @@ APT_HIDDEN std::ostream &operator<<(std::ostream &out, GlobalError::Item i)
case GlobalError::NOTICE:
case GlobalError::AUDIT:
out << COLOR_RESET;
+ if (out_ver >= 30)
+ out << COLOR_BOLD;
break;
default:
break;
diff --git a/apt-pkg/tagfile.cc b/apt-pkg/tagfile.cc
index 95ae4a483..934a89d59 100644
--- a/apt-pkg/tagfile.cc
+++ b/apt-pkg/tagfile.cc
@@ -12,6 +12,7 @@
// Include Files /*{{{*/
#include <config.h>
+#include <apt-pkg/configuration.h>
#include <apt-pkg/error.h>
#include <apt-pkg/fileutl.h>
#include <apt-pkg/string_view.h>
@@ -30,8 +31,9 @@
#include <apti18n.h>
/*}}}*/
-using std::string;
using APT::StringView;
+using APT::Configuration::color;
+using std::string;
class APT_HIDDEN pkgTagFilePrivate /*{{{*/
{
@@ -972,19 +974,23 @@ pkgTagSection::Tag pkgTagSection::Tag::Rewrite(std::string const &Name, std::str
else
return Tag(REWRITE, Name, Data);
}
-static bool WriteTag(FileFd &File, std::string Tag, StringView Value)
+static bool WriteTag(FileFd &File, std::string Tag, StringView Value, pkgTagSection::WriteFlags flags)
{
if (Value.empty() || isspace_ascii(Value[0]) != 0)
Tag.append(":");
else
Tag.append(": ");
+
+ if (flags & pkgTagSection::WRITE_HUMAN)
+ Tag = color("Show::Field", Tag);
+
Tag.append(Value.data(), Value.length());
Tag.append("\n");
return File.Write(Tag.c_str(), Tag.length());
}
-static bool RewriteTags(FileFd &File, pkgTagSection const * const This, char const * const Tag,
- std::vector<pkgTagSection::Tag>::const_iterator &R,
- std::vector<pkgTagSection::Tag>::const_iterator const &REnd)
+static bool RewriteTags(FileFd &File, pkgTagSection const *const This, char const *const Tag,
+ std::vector<pkgTagSection::Tag>::const_iterator &R,
+ std::vector<pkgTagSection::Tag>::const_iterator const &REnd, pkgTagSection::WriteFlags flags)
{
size_t const TagLen = strlen(Tag);
for (; R != REnd; ++R)
@@ -1002,19 +1008,23 @@ static bool RewriteTags(FileFd &File, pkgTagSection const * const This, char con
else
continue;
- return WriteTag(File, Tag, data);
+ return WriteTag(File, Tag, data, flags);
}
return true;
}
bool pkgTagSection::Write(FileFd &File, char const * const * const Order, std::vector<Tag> const &Rewrite) const
{
+ return Write(File, WRITE_DEFAULT, Order, Rewrite);
+}
+bool pkgTagSection::Write(FileFd &File, pkgTagSection::WriteFlags flags, char const *const *const Order, std::vector<Tag> const &Rewrite) const
+{
// first pass: Write everything we have an order for
if (Order != NULL)
{
for (unsigned int I = 0; Order[I] != 0; ++I)
{
std::vector<Tag>::const_iterator R = Rewrite.begin();
- if (RewriteTags(File, this, Order[I], R, Rewrite.end()) == false)
+ if (RewriteTags(File, this, Order[I], R, Rewrite.end(), flags) == false)
return false;
if (R != Rewrite.end())
continue;
@@ -1022,7 +1032,7 @@ bool pkgTagSection::Write(FileFd &File, char const * const * const Order, std::v
if (Exists(Order[I]) == false)
continue;
- if (WriteTag(File, Order[I], FindRaw(Order[I])) == false)
+ if (WriteTag(File, Order[I], FindRaw(Order[I]), flags) == false)
return false;
}
}
@@ -1047,12 +1057,12 @@ bool pkgTagSection::Write(FileFd &File, char const * const * const Order, std::v
std::string const name(fieldname, fieldnamelen);
std::vector<Tag>::const_iterator R = Rewrite.begin();
- if (RewriteTags(File, this, name.c_str(), R, Rewrite.end()) == false)
+ if (RewriteTags(File, this, name.c_str(), R, Rewrite.end(), flags) == false)
return false;
if (R != Rewrite.end())
continue;
- if (WriteTag(File, name, FindRaw(name)) == false)
+ if (WriteTag(File, name, FindRaw(name), flags) == false)
return false;
}
}
@@ -1076,7 +1086,7 @@ bool pkgTagSection::Write(FileFd &File, char const * const * const Order, std::v
continue;
}
- if (WriteTag(File, name, ((R->Action == Tag::RENAME) ? FindRaw(R->Name) : R->Data)) == false)
+ if (WriteTag(File, name, ((R->Action == Tag::RENAME) ? FindRaw(R->Name) : R->Data), flags) == false)
return false;
}
return true;
diff --git a/apt-pkg/tagfile.h b/apt-pkg/tagfile.h
index 0020d284b..45529c9f5 100644
--- a/apt-pkg/tagfile.h
+++ b/apt-pkg/tagfile.h
@@ -166,6 +166,14 @@ class APT_PUBLIC pkgTagSection
* @return \b true if successful, otherwise \b false
*/
bool Write(FileFd &File, char const * const * const Order = NULL, std::vector<Tag> const &Rewrite = std::vector<Tag>()) const;
+#ifdef APT_COMPILING_APT
+ enum WriteFlags
+ {
+ WRITE_DEFAULT = 0,
+ WRITE_HUMAN = (1 << 0), /* write human readable output, may include highlighting */
+ };
+ bool Write(FileFd &File, WriteFlags flags, char const *const *const Order = NULL, std::vector<Tag> const &Rewrite = std::vector<Tag>()) const;
+#endif
};