diff --git a/app/Makefile.am.inc b/app/Makefile.am.inc
index 5d9a6a47..df78cfec 100644
--- a/app/Makefile.am.inc
+++ b/app/Makefile.am.inc
@@ -43,6 +43,8 @@ flatpak_SOURCES = \
app/flatpak-table-printer.h \
app/flatpak-complete.c \
app/flatpak-complete.h \
+ app/flatpak-cli-transaction.c \
+ app/flatpak-cli-transaction.h \
app/parse-datetime.h \
$(NULL)
diff --git a/app/flatpak-builtins-install.c b/app/flatpak-builtins-install.c
index 67c6d5b3..3c994f5a 100644
--- a/app/flatpak-builtins-install.c
+++ b/app/flatpak-builtins-install.c
@@ -33,8 +33,7 @@
#include "flatpak-builtins.h"
#include "flatpak-builtins-utils.h"
-#include "flatpak-transaction-private.h"
-#include "flatpak-transaction.h"
+#include "flatpak-cli-transaction.h"
#include "flatpak-utils-private.h"
#include "flatpak-error.h"
#include "flatpak-chain-input-stream-private.h"
@@ -288,8 +287,7 @@ install_bundle (FlatpakDir *dir,
if (!flatpak_dir_ensure_repo (dir, cancellable, error))
return FALSE;
- transaction = flatpak_transaction_new (dir);
- flatpak_transaction_set_disable_interaction (transaction, opt_yes);
+ transaction = flatpak_cli_transaction_new (dir, opt_yes);
flatpak_transaction_set_no_pull (transaction, opt_no_pull);
flatpak_transaction_set_no_deploy (transaction, opt_no_deploy);
flatpak_transaction_set_disable_static_deltas (transaction, opt_no_static_deltas);
@@ -448,8 +446,7 @@ install_from (FlatpakDir *dir,
slash = strchr (ref, '/');
g_print (_("Installing: %s\n"), slash + 1);
- transaction = flatpak_transaction_new (clone);
- flatpak_transaction_set_disable_interaction (transaction, opt_yes);
+ transaction = flatpak_cli_transaction_new (clone, opt_yes);
flatpak_transaction_set_no_pull (transaction, opt_no_pull);
flatpak_transaction_set_no_deploy (transaction, opt_no_deploy);
flatpak_transaction_set_disable_static_deltas (transaction, opt_no_static_deltas);
@@ -533,8 +530,7 @@ flatpak_builtin_install (int argc, char **argv, GCancellable *cancellable, GErro
default_branch = flatpak_dir_get_remote_default_branch (dir, remote);
kinds = flatpak_kinds_from_bools (opt_app, opt_runtime);
- transaction = flatpak_transaction_new (dir);
- flatpak_transaction_set_disable_interaction (transaction, opt_yes);
+ transaction = flatpak_cli_transaction_new (dir, opt_yes);
flatpak_transaction_set_no_pull (transaction, opt_no_pull);
flatpak_transaction_set_no_deploy (transaction, opt_no_deploy);
flatpak_transaction_set_disable_static_deltas (transaction, opt_no_static_deltas);
diff --git a/app/flatpak-builtins-update.c b/app/flatpak-builtins-update.c
index c61cca17..de35b661 100644
--- a/app/flatpak-builtins-update.c
+++ b/app/flatpak-builtins-update.c
@@ -31,7 +31,7 @@
#include "flatpak-builtins.h"
#include "flatpak-builtins-utils.h"
-#include "flatpak-transaction-private.h"
+#include "flatpak-cli-transaction.h"
#include "flatpak-utils-private.h"
#include "flatpak-error.h"
@@ -110,8 +110,7 @@ flatpak_builtin_update (int argc,
for (k = 0; k < dirs->len; k++)
{
- FlatpakTransaction *transaction = flatpak_transaction_new (g_ptr_array_index (dirs, k));
- flatpak_transaction_set_disable_interaction (transaction, opt_yes);
+ FlatpakTransaction *transaction = flatpak_cli_transaction_new (g_ptr_array_index (dirs, k), opt_yes);
flatpak_transaction_set_no_pull (transaction, opt_no_pull);
flatpak_transaction_set_no_deploy (transaction, opt_no_deploy);
flatpak_transaction_set_disable_static_deltas (transaction, opt_no_static_deltas);
diff --git a/app/flatpak-cli-transaction.c b/app/flatpak-cli-transaction.c
new file mode 100644
index 00000000..2322a6fa
--- /dev/null
+++ b/app/flatpak-cli-transaction.c
@@ -0,0 +1,33 @@
+/*
+ * Copyright © 2018 Red Hat, Inc
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see .
+ *
+ * Authors:
+ * Alexander Larsson
+ */
+
+#include "config.h"
+
+#include "flatpak-cli-transaction.h"
+#include "flatpak-transaction-private.h"
+
+FlatpakTransaction *
+flatpak_cli_transaction_new (FlatpakDir *dir,
+ gboolean disable_interaction)
+{
+ FlatpakTransaction *transaction = flatpak_transaction_new (dir);
+ flatpak_transaction_set_disable_interaction (transaction, disable_interaction);
+ return transaction;
+}
diff --git a/app/flatpak-cli-transaction.h b/app/flatpak-cli-transaction.h
new file mode 100644
index 00000000..dc73612a
--- /dev/null
+++ b/app/flatpak-cli-transaction.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright © 2018 Red Hat, Inc
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see .
+ *
+ * Authors:
+ * Alexander Larsson
+ */
+
+#ifndef __FLATPAK_CLI_TRANSACTION_H__
+#define __FLATPAK_CLI_TRANSACTION_H__
+
+#include "flatpak-transaction.h"
+#include "flatpak-dir-private.h"
+
+FlatpakTransaction *flatpak_cli_transaction_new (FlatpakDir *dir,
+ gboolean disable_interaction);
+
+#endif /* __FLATPAK_CLI_TRANSACTION_H__ */