diff options
author | Alexander Larsson <alexl@redhat.com> | 2021-05-17 14:01:12 +0200 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2021-05-19 09:54:59 +0200 |
commit | 515ae5e5df8a9248210c4acb9b9dbe791990bace (patch) | |
tree | 2acde584c863f079de91567adc29db510714fd32 | |
parent | 0a9d5ac7f2e0e3f9d49a4c498bcde3d69abed097 (diff) | |
download | flatpak-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.c | 5 | ||||
-rw-r--r-- | app/flatpak-table-printer.c | 25 | ||||
-rw-r--r-- | app/flatpak-table-printer.h | 4 |
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) |