Skip to content

Commit

Permalink
Support build-update-repo --redirect-url=
Browse files Browse the repository at this point in the history
When clients install/update they will see this property in the
(signed) summary and update the url in the config, making this
essentially a permanent redirect.
  • Loading branch information
alexlarsson committed May 9, 2017
1 parent c7f770b commit 7a4c825
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 1 deletion.
6 changes: 6 additions & 0 deletions app/flatpak-builtins-repo-update.c
Expand Up @@ -34,6 +34,7 @@
#include "flatpak-builtins-utils.h"

static char *opt_title;
static char *opt_redirect_url;
static char *opt_default_branch;
static char **opt_gpg_import;
static char *opt_generate_delta_from;
Expand All @@ -46,6 +47,7 @@ static gboolean opt_generate_deltas;
static gint opt_prune_depth = -1;

static GOptionEntry options[] = {
{ "redirect-url", 0, 0, G_OPTION_ARG_STRING, &opt_redirect_url, N_("Redirect this repo to a new URL"), N_("URL") },
{ "title", 0, 0, G_OPTION_ARG_STRING, &opt_title, N_("A nice name to use for this repository"), N_("TITLE") },
{ "default-branch", 0, 0, G_OPTION_ARG_STRING, &opt_default_branch, N_("Default branch to use for this repository"), N_("BRANCH") },
{ "gpg-import", 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &opt_gpg_import, N_("Import new default GPG public key from FILE"), N_("FILE") },
Expand Down Expand Up @@ -425,6 +427,10 @@ flatpak_builtin_build_update_repo (int argc, char **argv,
!flatpak_repo_set_title (repo, opt_title, error))
return FALSE;

if (opt_redirect_url &&
!flatpak_repo_set_redirect_url (repo, opt_redirect_url, error))
return FALSE;

if (opt_default_branch &&
!flatpak_repo_set_default_branch (repo, opt_default_branch, error))
return FALSE;
Expand Down
6 changes: 5 additions & 1 deletion common/flatpak-dir.c
Expand Up @@ -7750,6 +7750,7 @@ flatpak_dir_update_remote_configuration_for_summary (FlatpakDir *self,
"xa.title",
"xa.default-branch",
"xa.gpg-keys",
"xa.redirect-url",
NULL
};

Expand Down Expand Up @@ -7793,7 +7794,10 @@ flatpak_dir_update_remote_configuration_for_summary (FlatpakDir *self,
const char *value = g_variant_get_string(value_var, NULL);
if (value != NULL && *value != 0)
{
g_ptr_array_add (updated_params, g_strdup (key));
if (strcmp (key, "xa.redirect-url") == 0)
g_ptr_array_add (updated_params, g_strdup ("url"));
else
g_ptr_array_add (updated_params, g_strdup (key));
g_ptr_array_add (updated_params, g_strdup (value));
}
}
Expand Down
26 changes: 26 additions & 0 deletions common/flatpak-utils.c
Expand Up @@ -2587,6 +2587,26 @@ flatpak_repo_set_title (OstreeRepo *repo,
return TRUE;
}

gboolean
flatpak_repo_set_redirect_url (OstreeRepo *repo,
const char *redirect_url,
GError **error)
{
g_autoptr(GKeyFile) config = NULL;

config = ostree_repo_copy_config (repo);

if (redirect_url)
g_key_file_set_string (config, "flatpak", "redirect-url", redirect_url);
else
g_key_file_remove_key (config, "flatpak", "redirect-url", NULL);

if (!ostree_repo_write_config (repo, config, error))
return FALSE;

return TRUE;
}

gboolean
flatpak_repo_set_gpg_keys (OstreeRepo *repo,
GBytes *bytes,
Expand Down Expand Up @@ -2849,6 +2869,7 @@ flatpak_repo_update (OstreeRepo *repo,
GVariantBuilder ref_data_builder;
GKeyFile *config;
g_autofree char *title = NULL;
g_autofree char *redirect_url = NULL;
g_autofree char *default_branch = NULL;
g_autofree char *gpg_keys = NULL;
g_autoptr(GVariant) old_summary = NULL;
Expand All @@ -2869,12 +2890,17 @@ flatpak_repo_update (OstreeRepo *repo,
title = g_key_file_get_string (config, "flatpak", "title", NULL);
default_branch = g_key_file_get_string (config, "flatpak", "default-branch", NULL);
gpg_keys = g_key_file_get_string (config, "flatpak", "gpg-keys", NULL);
redirect_url = g_key_file_get_string (config, "flatpak", "redirect-url", NULL);
}

if (title)
g_variant_builder_add (&builder, "{sv}", "xa.title",
g_variant_new_string (title));

if (redirect_url)
g_variant_builder_add (&builder, "{sv}", "xa.redirect-url",
g_variant_new_string (redirect_url));

if (default_branch)
g_variant_builder_add (&builder, "{sv}", "xa.default-branch",
g_variant_new_string (default_branch));
Expand Down
3 changes: 3 additions & 0 deletions common/flatpak-utils.h
Expand Up @@ -285,6 +285,9 @@ gint flatpak_mkstempat (int dir_fd,
gboolean flatpak_repo_set_title (OstreeRepo *repo,
const char *title,
GError **error);
gboolean flatpak_repo_set_redirect_url (OstreeRepo *repo,
const char *redirect_url,
GError **error);
gboolean flatpak_repo_set_default_branch (OstreeRepo *repo,
const char *branch,
GError **error);
Expand Down

0 comments on commit 7a4c825

Please sign in to comment.