diff options
author | Dan Nicholson <nicholson@endlessm.com> | 2017-09-12 17:05:08 -0500 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2019-02-08 14:36:41 +0000 |
commit | b33a4e9b1e5df8c4126dedb9f24f66ee0b1d7ad5 (patch) | |
tree | b6bc48cd601207ff9d7e9f97e759c183a9868d27 /src/ostree/ot-remote-builtin-add.c | |
parent | 8431bb54066ae8ab677ba95ed7c016eb9bc03230 (diff) | |
download | ostree-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.c | 21 |
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)) |