sysupdate: Split UpdateSetFlags out from UpdateSet
This will let us reuse UpdateSetFlags in updatectl
This commit is contained in:
@@ -8,6 +8,7 @@ systemd_sysupdate_sources = files(
|
||||
'sysupdate-resource.c',
|
||||
'sysupdate-transfer.c',
|
||||
'sysupdate-update-set.c',
|
||||
'sysupdate-update-set-flags.c',
|
||||
'sysupdate.c',
|
||||
)
|
||||
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
|
||||
#include "glyph-util.h"
|
||||
#include "sysupdate-update-set-flags.h"
|
||||
#include "terminal-util.h"
|
||||
|
||||
const char *update_set_flags_to_color(UpdateSetFlags flags) {
|
||||
|
||||
if (flags == 0 || (flags & UPDATE_OBSOLETE))
|
||||
return (flags & UPDATE_NEWEST) ? ansi_highlight_grey() : ansi_grey();
|
||||
|
||||
if (FLAGS_SET(flags, UPDATE_INSTALLED|UPDATE_NEWEST))
|
||||
return ansi_highlight();
|
||||
|
||||
if (FLAGS_SET(flags, UPDATE_INSTALLED|UPDATE_PROTECTED))
|
||||
return ansi_highlight_magenta();
|
||||
|
||||
if ((flags & (UPDATE_AVAILABLE|UPDATE_INSTALLED|UPDATE_NEWEST|UPDATE_OBSOLETE)) == (UPDATE_AVAILABLE|UPDATE_NEWEST))
|
||||
return ansi_highlight_green();
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const char *update_set_flags_to_glyph(UpdateSetFlags flags) {
|
||||
|
||||
if (flags == 0 || (flags & UPDATE_OBSOLETE))
|
||||
return special_glyph(SPECIAL_GLYPH_MULTIPLICATION_SIGN);
|
||||
|
||||
if (FLAGS_SET(flags, UPDATE_INSTALLED|UPDATE_NEWEST))
|
||||
return special_glyph(SPECIAL_GLYPH_BLACK_CIRCLE);
|
||||
|
||||
if (FLAGS_SET(flags, UPDATE_INSTALLED|UPDATE_PROTECTED))
|
||||
return special_glyph(SPECIAL_GLYPH_WHITE_CIRCLE);
|
||||
|
||||
if ((flags & (UPDATE_AVAILABLE|UPDATE_INSTALLED|UPDATE_NEWEST|UPDATE_OBSOLETE)) == (UPDATE_AVAILABLE|UPDATE_NEWEST))
|
||||
return special_glyph(SPECIAL_GLYPH_CIRCLE_ARROW);
|
||||
|
||||
return " ";
|
||||
}
|
||||
|
||||
const char *update_set_flags_to_string(UpdateSetFlags flags) {
|
||||
|
||||
switch ((unsigned) flags) {
|
||||
|
||||
case 0:
|
||||
return "n/a";
|
||||
|
||||
case UPDATE_INSTALLED|UPDATE_NEWEST:
|
||||
case UPDATE_INSTALLED|UPDATE_NEWEST|UPDATE_PROTECTED:
|
||||
case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_NEWEST:
|
||||
case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_NEWEST|UPDATE_PROTECTED:
|
||||
return "current";
|
||||
|
||||
case UPDATE_AVAILABLE|UPDATE_NEWEST:
|
||||
case UPDATE_AVAILABLE|UPDATE_NEWEST|UPDATE_PROTECTED:
|
||||
return "candidate";
|
||||
|
||||
case UPDATE_INSTALLED:
|
||||
case UPDATE_INSTALLED|UPDATE_AVAILABLE:
|
||||
return "installed";
|
||||
|
||||
case UPDATE_INSTALLED|UPDATE_PROTECTED:
|
||||
case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_PROTECTED:
|
||||
return "protected";
|
||||
|
||||
case UPDATE_AVAILABLE:
|
||||
case UPDATE_AVAILABLE|UPDATE_PROTECTED:
|
||||
return "available";
|
||||
|
||||
case UPDATE_INSTALLED|UPDATE_OBSOLETE|UPDATE_NEWEST:
|
||||
case UPDATE_INSTALLED|UPDATE_OBSOLETE|UPDATE_NEWEST|UPDATE_PROTECTED:
|
||||
case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_NEWEST:
|
||||
case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_NEWEST|UPDATE_PROTECTED:
|
||||
return "current+obsolete";
|
||||
|
||||
case UPDATE_INSTALLED|UPDATE_OBSOLETE:
|
||||
case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_OBSOLETE:
|
||||
return "installed+obsolete";
|
||||
|
||||
case UPDATE_INSTALLED|UPDATE_OBSOLETE|UPDATE_PROTECTED:
|
||||
case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_PROTECTED:
|
||||
return "protected+obsolete";
|
||||
|
||||
case UPDATE_AVAILABLE|UPDATE_OBSOLETE:
|
||||
case UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_PROTECTED:
|
||||
case UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_NEWEST:
|
||||
case UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_NEWEST|UPDATE_PROTECTED:
|
||||
return "available+obsolete";
|
||||
|
||||
default:
|
||||
assert_not_reached();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
typedef enum UpdateSetFlags {
|
||||
UPDATE_NEWEST = 1 << 0,
|
||||
UPDATE_AVAILABLE = 1 << 1,
|
||||
UPDATE_INSTALLED = 1 << 2,
|
||||
UPDATE_OBSOLETE = 1 << 3,
|
||||
UPDATE_PROTECTED = 1 << 4,
|
||||
} UpdateSetFlags;
|
||||
|
||||
const char *update_set_flags_to_color(UpdateSetFlags flags);
|
||||
const char *update_set_flags_to_glyph(UpdateSetFlags flags);
|
||||
const char *update_set_flags_to_string(UpdateSetFlags flags);
|
||||
@@ -1,10 +1,8 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
|
||||
#include "alloc-util.h"
|
||||
#include "glyph-util.h"
|
||||
#include "string-util.h"
|
||||
#include "sysupdate-update-set.h"
|
||||
#include "terminal-util.h"
|
||||
|
||||
UpdateSet *update_set_free(UpdateSet *us) {
|
||||
if (!us)
|
||||
@@ -27,37 +25,3 @@ int update_set_cmp(UpdateSet *const*a, UpdateSet *const*b) {
|
||||
/* Newest version at the beginning */
|
||||
return -strverscmp_improved((*a)->version, (*b)->version);
|
||||
}
|
||||
|
||||
const char* update_set_flags_to_color(UpdateSetFlags flags) {
|
||||
|
||||
if (flags == 0 || (flags & UPDATE_OBSOLETE))
|
||||
return (flags & UPDATE_NEWEST) ? ansi_highlight_grey() : ansi_grey();
|
||||
|
||||
if (FLAGS_SET(flags, UPDATE_INSTALLED|UPDATE_NEWEST))
|
||||
return ansi_highlight();
|
||||
|
||||
if (FLAGS_SET(flags, UPDATE_INSTALLED|UPDATE_PROTECTED))
|
||||
return ansi_highlight_magenta();
|
||||
|
||||
if ((flags & (UPDATE_AVAILABLE|UPDATE_INSTALLED|UPDATE_NEWEST|UPDATE_OBSOLETE)) == (UPDATE_AVAILABLE|UPDATE_NEWEST))
|
||||
return ansi_highlight_green();
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const char* update_set_flags_to_glyph(UpdateSetFlags flags) {
|
||||
|
||||
if (flags == 0 || (flags & UPDATE_OBSOLETE))
|
||||
return special_glyph(SPECIAL_GLYPH_MULTIPLICATION_SIGN);
|
||||
|
||||
if (FLAGS_SET(flags, UPDATE_INSTALLED|UPDATE_NEWEST))
|
||||
return special_glyph(SPECIAL_GLYPH_BLACK_CIRCLE);
|
||||
|
||||
if (FLAGS_SET(flags, UPDATE_INSTALLED|UPDATE_PROTECTED))
|
||||
return special_glyph(SPECIAL_GLYPH_WHITE_CIRCLE);
|
||||
|
||||
if ((flags & (UPDATE_AVAILABLE|UPDATE_INSTALLED|UPDATE_NEWEST|UPDATE_OBSOLETE)) == (UPDATE_AVAILABLE|UPDATE_NEWEST))
|
||||
return special_glyph(SPECIAL_GLYPH_CIRCLE_ARROW);
|
||||
|
||||
return " ";
|
||||
}
|
||||
|
||||
@@ -8,14 +8,7 @@
|
||||
typedef struct UpdateSet UpdateSet;
|
||||
|
||||
#include "sysupdate-instance.h"
|
||||
|
||||
typedef enum UpdateSetFlags {
|
||||
UPDATE_NEWEST = 1 << 0,
|
||||
UPDATE_AVAILABLE = 1 << 1,
|
||||
UPDATE_INSTALLED = 1 << 2,
|
||||
UPDATE_OBSOLETE = 1 << 3,
|
||||
UPDATE_PROTECTED = 1 << 4,
|
||||
} UpdateSetFlags;
|
||||
#include "sysupdate-update-set-flags.h"
|
||||
|
||||
struct UpdateSet {
|
||||
UpdateSetFlags flags;
|
||||
@@ -25,8 +18,4 @@ struct UpdateSet {
|
||||
};
|
||||
|
||||
UpdateSet *update_set_free(UpdateSet *us);
|
||||
|
||||
int update_set_cmp(UpdateSet *const*a, UpdateSet *const*b);
|
||||
|
||||
const char* update_set_flags_to_color(UpdateSetFlags flags);
|
||||
const char* update_set_flags_to_glyph(UpdateSetFlags flags);
|
||||
|
||||
@@ -375,60 +375,6 @@ static int context_discover_update_sets(Context *c) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const char *update_set_flags_to_string(UpdateSetFlags flags) {
|
||||
|
||||
switch ((unsigned) flags) {
|
||||
|
||||
case 0:
|
||||
return "n/a";
|
||||
|
||||
case UPDATE_INSTALLED|UPDATE_NEWEST:
|
||||
case UPDATE_INSTALLED|UPDATE_NEWEST|UPDATE_PROTECTED:
|
||||
case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_NEWEST:
|
||||
case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_NEWEST|UPDATE_PROTECTED:
|
||||
return "current";
|
||||
|
||||
case UPDATE_AVAILABLE|UPDATE_NEWEST:
|
||||
case UPDATE_AVAILABLE|UPDATE_NEWEST|UPDATE_PROTECTED:
|
||||
return "candidate";
|
||||
|
||||
case UPDATE_INSTALLED:
|
||||
case UPDATE_INSTALLED|UPDATE_AVAILABLE:
|
||||
return "installed";
|
||||
|
||||
case UPDATE_INSTALLED|UPDATE_PROTECTED:
|
||||
case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_PROTECTED:
|
||||
return "protected";
|
||||
|
||||
case UPDATE_AVAILABLE:
|
||||
case UPDATE_AVAILABLE|UPDATE_PROTECTED:
|
||||
return "available";
|
||||
|
||||
case UPDATE_INSTALLED|UPDATE_OBSOLETE|UPDATE_NEWEST:
|
||||
case UPDATE_INSTALLED|UPDATE_OBSOLETE|UPDATE_NEWEST|UPDATE_PROTECTED:
|
||||
case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_NEWEST:
|
||||
case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_NEWEST|UPDATE_PROTECTED:
|
||||
return "current+obsolete";
|
||||
|
||||
case UPDATE_INSTALLED|UPDATE_OBSOLETE:
|
||||
case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_OBSOLETE:
|
||||
return "installed+obsolete";
|
||||
|
||||
case UPDATE_INSTALLED|UPDATE_OBSOLETE|UPDATE_PROTECTED:
|
||||
case UPDATE_INSTALLED|UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_PROTECTED:
|
||||
return "protected+obsolete";
|
||||
|
||||
case UPDATE_AVAILABLE|UPDATE_OBSOLETE:
|
||||
case UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_PROTECTED:
|
||||
case UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_NEWEST:
|
||||
case UPDATE_AVAILABLE|UPDATE_OBSOLETE|UPDATE_NEWEST|UPDATE_PROTECTED:
|
||||
return "available+obsolete";
|
||||
|
||||
default:
|
||||
assert_not_reached();
|
||||
}
|
||||
}
|
||||
|
||||
static int context_show_table(Context *c) {
|
||||
_cleanup_(table_unrefp) Table *t = NULL;
|
||||
int r;
|
||||
|
||||
Reference in New Issue
Block a user