summaryrefslogtreecommitdiff
path: root/app/flatpak-builtins-list-remotes.c
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2016-05-06 18:03:47 +0200
committerAlexander Larsson <alexl@redhat.com>2016-05-09 09:00:20 +0200
commitc24528d3697c62cad8ff746a56992a59f31d333d (patch)
tree2dbb32e15c57cc4061f7b37d6db29a7b97228c15 /app/flatpak-builtins-list-remotes.c
parent6a613d1fabce5e93656cfbcb6815cc9bc98f437b (diff)
downloadxdg-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.c149
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;
+}