diff options
-rw-r--r-- | app/flatpak-builtins-uninstall.c | 14 | ||||
-rw-r--r-- | common/flatpak-dir.c | 5 | ||||
-rw-r--r-- | common/flatpak-dir.h | 9 | ||||
-rw-r--r-- | lib/flatpak-installation.c | 2 |
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; |