summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/flatpak-builtins-uninstall.c14
-rw-r--r--common/flatpak-dir.c5
-rw-r--r--common/flatpak-dir.h9
-rw-r--r--lib/flatpak-installation.c2
4 files changed, 19 insertions, 11 deletions
diff --git a/app/flatpak-builtins-uninstall.c b/app/flatpak-builtins-uninstall.c
index 4504954..1091e20 100644
--- a/app/flatpak-builtins-uninstall.c
+++ b/app/flatpak-builtins-uninstall.c
@@ -55,6 +55,7 @@ flatpak_builtin_uninstall (int argc, char **argv, GCancellable *cancellable, GEr
const char *branch = NULL;
g_autofree char *ref = NULL;
gboolean is_app;
+ FlatpakHelperUninstallFlags flags = 0;
context = g_option_context_new ("APP [BRANCH] - Uninstall an application");
@@ -82,12 +83,13 @@ flatpak_builtin_uninstall (int argc, char **argv, GCancellable *cancellable, GEr
/* TODO: when removing runtimes, look for apps that use it, require --force */
- if (!flatpak_dir_uninstall (dir,
- ref,
- opt_keep_ref,
- opt_force_remove,
- cancellable,
- error))
+ if (opt_keep_ref)
+ flags |= FLATPAK_HELPER_UNINSTALL_FLAGS_KEEP_REF;
+ if (opt_force_remove)
+ flags |= FLATPAK_HELPER_UNINSTALL_FLAGS_FORCE_REMOVE;
+
+ if (!flatpak_dir_uninstall (dir, ref, flags,
+ cancellable, error))
return FALSE;
return TRUE;
diff --git a/common/flatpak-dir.c b/common/flatpak-dir.c
index 482d19b..7676cc4 100644
--- a/common/flatpak-dir.c
+++ b/common/flatpak-dir.c
@@ -3091,8 +3091,7 @@ flatpak_dir_update (FlatpakDir *self,
gboolean
flatpak_dir_uninstall (FlatpakDir *self,
const char *ref,
- gboolean keep_ref,
- gboolean force_remove,
+ FlatpakHelperUninstallFlags flags,
GCancellable *cancellable,
GError **error)
{
@@ -3104,6 +3103,8 @@ flatpak_dir_uninstall (FlatpakDir *self,
g_auto(GStrv) parts = NULL;
g_auto(GLnxLockFile) lock = GLNX_LOCK_FILE_INIT;
g_autoptr(GVariant) deploy_data = NULL;
+ gboolean keep_ref = flags & FLATPAK_HELPER_UNINSTALL_FLAGS_KEEP_REF;
+ gboolean force_remove = flags & FLATPAK_HELPER_UNINSTALL_FLAGS_FORCE_REMOVE;
parts = flatpak_decompose_ref (ref, error);
if (parts == NULL)
diff --git a/common/flatpak-dir.h b/common/flatpak-dir.h
index 2755b3b..3d6b2b8 100644
--- a/common/flatpak-dir.h
+++ b/common/flatpak-dir.h
@@ -45,6 +45,12 @@ typedef enum {
FLATPAK_HELPER_DEPLOY_FLAGS_UPDATE = 1 << 0,
} FlatpakHelperDeployFlags;
+typedef enum {
+ FLATPAK_HELPER_UNINSTALL_FLAGS_NONE = 0,
+ FLATPAK_HELPER_UNINSTALL_FLAGS_KEEP_REF = 1 << 0,
+ FLATPAK_HELPER_UNINSTALL_FLAGS_FORCE_REMOVE = 1 << 1,
+} FlatpakHelperUninstallFlags;
+
#define FLATPAK_HELPER_DEPLOY_FLAGS_ALL (FLATPAK_HELPER_DEPLOY_FLAGS_UPDATE)
GQuark flatpak_dir_error_quark (void);
@@ -271,8 +277,7 @@ gboolean flatpak_dir_update (FlatpakDir *self,
GError **error);
gboolean flatpak_dir_uninstall (FlatpakDir *self,
const char *ref,
- gboolean keep_ref,
- gboolean force_remove,
+ FlatpakHelperUninstallFlags flags,
GCancellable *cancellable,
GError **error);
gboolean flatpak_dir_undeploy (FlatpakDir *self,
diff --git a/lib/flatpak-installation.c b/lib/flatpak-installation.c
index 41c0212..5bf84ed 100644
--- a/lib/flatpak-installation.c
+++ b/lib/flatpak-installation.c
@@ -1148,7 +1148,7 @@ flatpak_installation_uninstall (FlatpakInstallation *self,
/* prune, etc are not threadsafe, so we work on a copy */
dir_clone = flatpak_dir_clone (priv->dir);
- if (!flatpak_dir_uninstall (dir_clone, ref, FALSE, FALSE,
+ if (!flatpak_dir_uninstall (dir_clone, ref, FLATPAK_HELPER_UNINSTALL_FLAGS_NONE,
cancellable, error))
return FALSE;