summaryrefslogtreecommitdiff
path: root/src/ostree/ot-remote-builtin-add.c
diff options
context:
space:
mode:
authorDan Nicholson <nicholson@endlessm.com>2017-09-12 17:05:08 -0500
committerAtomic Bot <atomic-devel@projectatomic.io>2019-02-08 14:36:41 +0000
commitb33a4e9b1e5df8c4126dedb9f24f66ee0b1d7ad5 (patch)
treeb6bc48cd601207ff9d7e9f97e759c183a9868d27 /src/ostree/ot-remote-builtin-add.c
parent8431bb54066ae8ab677ba95ed7c016eb9bc03230 (diff)
downloadostree-b33a4e9b1e5df8c4126dedb9f24f66ee0b1d7ad5.tar.gz
remote-add: Add --force option to add or replace remote
This uses the OSTREE_REPO_REMOTE_CHANGE_REPLACE operation to add a remote or replace an existing one. This is roughly the opposite of --if-not-exists and will raise an error if both options are passed. Closes: #1166 Approved by: cgwalters
Diffstat (limited to 'src/ostree/ot-remote-builtin-add.c')
-rw-r--r--src/ostree/ot-remote-builtin-add.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/ostree/ot-remote-builtin-add.c b/src/ostree/ot-remote-builtin-add.c
index 8b339dbd..f81f7580 100644
--- a/src/ostree/ot-remote-builtin-add.c
+++ b/src/ostree/ot-remote-builtin-add.c
@@ -30,6 +30,7 @@
static char **opt_set;
static gboolean opt_no_gpg_verify;
static gboolean opt_if_not_exists;
+static gboolean opt_force;
static char *opt_gpg_import;
static char *opt_contenturl;
static char *opt_collection_id;
@@ -45,6 +46,7 @@ static GOptionEntry option_entries[] = {
{ "set", 0, 0, G_OPTION_ARG_STRING_ARRAY, &opt_set, "Set config option KEY=VALUE for remote", "KEY=VALUE" },
{ "no-gpg-verify", 0, 0, G_OPTION_ARG_NONE, &opt_no_gpg_verify, "Disable GPG verification", NULL },
{ "if-not-exists", 0, 0, G_OPTION_ARG_NONE, &opt_if_not_exists, "Do nothing if the provided remote exists", NULL },
+ { "force", 0, 0, G_OPTION_ARG_NONE, &opt_force, "Replace the provided remote if it exists", NULL },
{ "gpg-import", 0, 0, G_OPTION_ARG_FILENAME, &opt_gpg_import, "Import GPG key from FILE", "FILE" },
{ "contenturl", 0, 0, G_OPTION_ARG_STRING, &opt_contenturl, "Use URL when fetching content", "URL" },
{ "collection-id", 0, 0, G_OPTION_ARG_STRING, &opt_collection_id,
@@ -84,6 +86,14 @@ ot_remote_builtin_add (int argc, char **argv, OstreeCommandInvocation *invocatio
goto out;
}
+ if (opt_if_not_exists && opt_force)
+ {
+ ot_util_usage_error (context,
+ "Can only specify one of --if-not-exists and --force",
+ error);
+ goto out;
+ }
+
remote_name = argv[1];
remote_url = argv[2];
@@ -135,9 +145,14 @@ ot_remote_builtin_add (int argc, char **argv, OstreeCommandInvocation *invocatio
options = g_variant_ref_sink (g_variant_builder_end (optbuilder));
- if (!ostree_repo_remote_change (repo, NULL,
- opt_if_not_exists ? OSTREE_REPO_REMOTE_CHANGE_ADD_IF_NOT_EXISTS :
- OSTREE_REPO_REMOTE_CHANGE_ADD,
+ OstreeRepoRemoteChange changeop;
+ if (opt_if_not_exists)
+ changeop = OSTREE_REPO_REMOTE_CHANGE_ADD_IF_NOT_EXISTS;
+ else if (opt_force)
+ changeop = OSTREE_REPO_REMOTE_CHANGE_REPLACE;
+ else
+ changeop = OSTREE_REPO_REMOTE_CHANGE_ADD;
+ if (!ostree_repo_remote_change (repo, NULL, changeop,
remote_name, remote_url,
options,
cancellable, error))