diff options
author | Alexander Larsson <alexl@redhat.com> | 2016-05-06 18:03:47 +0200 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2016-05-09 09:00:20 +0200 |
commit | c24528d3697c62cad8ff746a56992a59f31d333d (patch) | |
tree | 2dbb32e15c57cc4061f7b37d6db29a7b97228c15 /app/flatpak-builtins-list-remotes.c | |
parent | 6a613d1fabce5e93656cfbcb6815cc9bc98f437b (diff) | |
download | xdg-app-c24528d3697c62cad8ff746a56992a59f31d333d.tar.gz |
Rename source files to flatpak
Diffstat (limited to 'app/flatpak-builtins-list-remotes.c')
-rw-r--r-- | app/flatpak-builtins-list-remotes.c | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/app/flatpak-builtins-list-remotes.c b/app/flatpak-builtins-list-remotes.c new file mode 100644 index 0000000..70c9afb --- /dev/null +++ b/app/flatpak-builtins-list-remotes.c @@ -0,0 +1,149 @@ +/* + * Copyright © 2014 Red Hat, Inc + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + * + * Authors: + * Alexander Larsson <alexl@redhat.com> + */ + +#include "config.h" + +#include <locale.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include "libgsystem.h" +#include "libglnx/libglnx.h" + +#include "flatpak-builtins.h" +#include "flatpak-utils.h" + +static gboolean opt_show_details; +static gboolean opt_user; +static gboolean opt_system; +static gboolean opt_show_disabled; + +static GOptionEntry options[] = { + { "user", 0, 0, G_OPTION_ARG_NONE, &opt_user, "Show user installations", NULL }, + { "system", 0, 0, G_OPTION_ARG_NONE, &opt_system, "Show system-wide installations", NULL }, + { "show-details", 'd', 0, G_OPTION_ARG_NONE, &opt_show_details, "Show remote details", NULL }, + { "show-disabled", 0, 0, G_OPTION_ARG_NONE, &opt_show_disabled, "Show disabled remotes", NULL }, + { NULL } +}; + +gboolean +flatpak_builtin_list_remotes (int argc, char **argv, GCancellable *cancellable, GError **error) +{ + g_autoptr(GOptionContext) context = NULL; + g_autoptr(FlatpakDir) user_dir = NULL; + g_autoptr(FlatpakDir) system_dir = NULL; + FlatpakDir *dirs[2] = { 0 }; + guint i = 0, n_dirs = 0, j; + FlatpakTablePrinter *printer; + + context = g_option_context_new (" - List remote repositories"); + + if (!flatpak_option_context_parse (context, options, &argc, &argv, FLATPAK_BUILTIN_FLAG_NO_DIR, NULL, cancellable, error)) + return FALSE; + + if (!opt_user && !opt_system) + opt_system = TRUE; + + if (opt_user) + { + user_dir = flatpak_dir_get_user (); + dirs[n_dirs++] = user_dir; + } + + if (opt_system) + { + system_dir = flatpak_dir_get_system (); + dirs[n_dirs++] = system_dir; + } + + printer = flatpak_table_printer_new (); + + for (j = 0; j < n_dirs; j++) + { + FlatpakDir *dir = dirs[j]; + g_auto(GStrv) remotes = NULL; + + remotes = flatpak_dir_list_remotes (dir, cancellable, error); + if (remotes == NULL) + return FALSE; + + for (i = 0; remotes[i] != NULL; i++) + { + char *remote_name = remotes[i]; + gboolean disabled; + + disabled = flatpak_dir_get_remote_disabled (dir, remote_name); + if (disabled && !opt_show_disabled) + continue; + + if (opt_show_details) + { + g_autofree char *remote_url = NULL; + g_autofree char *title = NULL; + int prio; + g_autofree char *prio_as_string = NULL; + gboolean gpg_verify = TRUE; + + flatpak_table_printer_add_column (printer, remote_name); + + title = flatpak_dir_get_remote_title (dir, remote_name); + if (title) + flatpak_table_printer_add_column (printer, title); + else + flatpak_table_printer_add_column (printer, "-"); + + ostree_repo_remote_get_url (flatpak_dir_get_repo (dir), remote_name, &remote_url, NULL); + + flatpak_table_printer_add_column (printer, remote_url); + + prio = flatpak_dir_get_remote_prio (dir, remote_name); + prio_as_string = g_strdup_printf ("%d", prio); + flatpak_table_printer_add_column (printer, prio_as_string); + + flatpak_table_printer_add_column (printer, ""); /* Options */ + + ostree_repo_remote_get_gpg_verify (flatpak_dir_get_repo (dir), remote_name, + &gpg_verify, NULL); + if (!gpg_verify) + flatpak_table_printer_append_with_comma (printer, "no-gpg-verify"); + if (disabled) + flatpak_table_printer_append_with_comma (printer, "disabled"); + + if (flatpak_dir_get_remote_noenumerate (dir, remote_name)) + flatpak_table_printer_append_with_comma (printer, "no-enumerate"); + + if (opt_user && opt_system) + flatpak_table_printer_append_with_comma (printer, dir == user_dir ? "user" : "system"); + } + else + { + flatpak_table_printer_add_column (printer, remote_name); + } + + flatpak_table_printer_finish_row (printer); + } + } + + flatpak_table_printer_print (printer); + flatpak_table_printer_free (printer); + + return TRUE; +} |