summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2021-05-17 14:01:12 +0200
committerAlexander Larsson <alexl@redhat.com>2021-05-19 09:54:59 +0200
commit515ae5e5df8a9248210c4acb9b9dbe791990bace (patch)
tree2acde584c863f079de91567adc29db510714fd32
parent0a9d5ac7f2e0e3f9d49a4c498bcde3d69abed097 (diff)
downloadflatpak-515ae5e5df8a9248210c4acb9b9dbe791990bace.tar.gz
CLI: List arch if it is not the primary arch (even if unique)
Currenly we only list arch in the list of things to install from a transaction if not all the refs are the same arch. It makes more sense to show the arch even if its unique if they are not the primary arch.
-rw-r--r--app/flatpak-cli-transaction.c5
-rw-r--r--app/flatpak-table-printer.c25
-rw-r--r--app/flatpak-table-printer.h4
3 files changed, 31 insertions, 3 deletions
diff --git a/app/flatpak-cli-transaction.c b/app/flatpak-cli-transaction.c
index 32a5b7e6..a19a6a41 100644
--- a/app/flatpak-cli-transaction.c
+++ b/app/flatpak-cli-transaction.c
@@ -1125,7 +1125,10 @@ transaction_ready_pre_auth (FlatpakTransaction *transaction)
flatpak_table_printer_set_column_expand (printer, i, TRUE);
if (!self->non_default_arch)
- flatpak_table_printer_set_column_skip_unique (printer, i, TRUE);
+ {
+ flatpak_table_printer_set_column_skip_unique (printer, i, TRUE);
+ flatpak_table_printer_set_column_skip_unique_string (printer, i, flatpak_get_arch ());
+ }
flatpak_table_printer_set_column_title (printer, i++, _("Arch"));
flatpak_table_printer_set_column_expand (printer, i, TRUE);
diff --git a/app/flatpak-table-printer.c b/app/flatpak-table-printer.c
index 8ea60ff7..a1e9d727 100644
--- a/app/flatpak-table-printer.c
+++ b/app/flatpak-table-printer.c
@@ -69,6 +69,7 @@ typedef struct
gboolean expand;
FlatpakEllipsizeMode ellipsize;
gboolean skip_unique;
+ char *skip_unique_str;
gboolean skip;
} TableColumn;
@@ -78,6 +79,7 @@ free_column (gpointer data)
TableColumn *column = data;
g_free (column->title);
+ g_free (column->skip_unique_str);
g_free (column);
}
@@ -391,7 +393,8 @@ string_add_spaces (GString *str, int count)
static gboolean
column_is_unique (FlatpakTablePrinter *printer, int col)
{
- char *first_row = NULL;
+ TableColumn *column = get_table_column (printer, col);
+ char *first_row = column->skip_unique_str;
int i;
for (i = 0; i < printer->rows->len; i++)
@@ -402,7 +405,7 @@ column_is_unique (FlatpakTablePrinter *printer, int col)
Cell *cell = g_ptr_array_index (row->cells, col);
- if (i == 0)
+ if (i == 0 && first_row == NULL)
first_row = cell->text;
else
{
@@ -853,6 +856,7 @@ flatpak_table_printer_set_column_ellipsize (FlatpakTablePrinter *printer,
col->ellipsize = mode;
}
+/* Specifies that the column should be skipped if all values are the same */
void
flatpak_table_printer_set_column_skip_unique (FlatpakTablePrinter *printer,
int column,
@@ -862,3 +866,20 @@ flatpak_table_printer_set_column_skip_unique (FlatpakTablePrinter *printer,
col->skip_unique = skip_unique;
}
+
+/* This modifies set_column_skip_unique to also require that the
+ * unique value of the column must be this particular string. Useful if you
+ * want to e.g. skip the arch list if everything is for the primary arch, but
+ * not if everything is for a non-standard arch.
+ */
+void
+flatpak_table_printer_set_column_skip_unique_string (FlatpakTablePrinter *printer,
+ int column,
+ const char *str)
+{
+ TableColumn *col = get_table_column (printer, column);
+
+ g_assert (col->skip_unique_str == NULL);
+
+ col->skip_unique_str = g_strdup (str);
+}
diff --git a/app/flatpak-table-printer.h b/app/flatpak-table-printer.h
index 55a546a8..dad03345 100644
--- a/app/flatpak-table-printer.h
+++ b/app/flatpak-table-printer.h
@@ -96,6 +96,10 @@ void flatpak_table_printer_set_column_ellipsize (FlatpakTablePrint
void flatpak_table_printer_set_column_skip_unique (FlatpakTablePrinter *printer,
int column,
gboolean skip_unique);
+void flatpak_table_printer_set_column_skip_unique_string (FlatpakTablePrinter *printer,
+ int column,
+ const char *str);
+
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FlatpakTablePrinter, flatpak_table_printer_free)