trivial: Allow setting install flags on the CLI for fwupdtool

This commit is contained in:
Richard Hughes 2018-05-21 20:56:21 +01:00
parent a36c9cfee1
commit 460226a9a8

View File

@ -46,6 +46,7 @@ typedef struct {
GPtrArray *cmd_array;
FuEngine *engine;
FuProgressbar *progressbar;
FwupdInstallFlags flags;
} FuUtilPrivate;
typedef gboolean (*FuUtilPrivateCb) (FuUtilPrivate *util,
@ -392,9 +393,7 @@ fu_util_install_blob (FuUtilPrivate *priv, gchar **values, GError **error)
NULL, /* blob_cab */
blob_fw,
NULL, /* version */
FWUPD_INSTALL_FLAG_ALLOW_OLDER |
FWUPD_INSTALL_FLAG_ALLOW_REINSTALL |
FWUPD_INSTALL_FLAG_NO_HISTORY,
priv->flags,
error);
}
@ -415,9 +414,6 @@ fu_util_install (FuUtilPrivate *priv, gchar **values, GError **error)
g_autoptr(GPtrArray) devices_possible = NULL;
g_autoptr(GPtrArray) errors = NULL;
g_autoptr(GPtrArray) install_tasks = NULL;
FwupdInstallFlags flags = FWUPD_INSTALL_FLAG_ALLOW_OLDER |
FWUPD_INSTALL_FLAG_ALLOW_REINSTALL |
FWUPD_INSTALL_FLAG_NO_HISTORY;
/* handle both forms */
if (g_strv_length (values) == 1) {
@ -464,7 +460,7 @@ fu_util_install (FuUtilPrivate *priv, gchar **values, GError **error)
/* is this component valid for the device */
task = fu_install_task_new (device, app);
if (!fu_engine_check_requirements (priv->engine,
task, flags,
task, priv->flags,
&error_local)) {
g_debug ("requirement on %s:%s failed: %s",
fu_device_get_id (device),
@ -492,7 +488,7 @@ fu_util_install (FuUtilPrivate *priv, gchar **values, GError **error)
/* install all the tasks */
for (guint i = 0; i < install_tasks->len; i++) {
FuInstallTask *task = g_ptr_array_index (install_tasks, i);
if (!fu_engine_install (priv->engine, task, blob_cab, flags, error))
if (!fu_engine_install (priv->engine, task, blob_cab, priv->flags, error))
return FALSE;
}
@ -569,6 +565,8 @@ fu_util_attach (FuUtilPrivate *priv, gchar **values, GError **error)
int
main (int argc, char *argv[])
{
gboolean allow_older = FALSE;
gboolean allow_reinstall = FALSE;
gboolean force = FALSE;
gboolean ret;
gboolean verbose = FALSE;
@ -579,6 +577,12 @@ main (int argc, char *argv[])
{ "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose,
/* TRANSLATORS: command line option */
_("Show extra debugging information"), NULL },
{ "allow-reinstall", '\0', 0, G_OPTION_ARG_NONE, &allow_reinstall,
/* TRANSLATORS: command line option */
_("Allow re-installing existing firmware versions"), NULL },
{ "allow-older", '\0', 0, G_OPTION_ARG_NONE, &allow_older,
/* TRANSLATORS: command line option */
_("Allow downgrading firmware versions"), NULL },
{ "force", '\0', 0, G_OPTION_ARG_NONE, &force,
/* TRANSLATORS: command line option */
_("Override plugin warning"), NULL },
@ -686,6 +690,15 @@ main (int argc, char *argv[])
fu_util_ignore_cb, NULL);
}
/* set flags */
priv->flags |= FWUPD_INSTALL_FLAG_NO_HISTORY;
if (allow_reinstall)
priv->flags |= FWUPD_INSTALL_FLAG_ALLOW_REINSTALL;
if (allow_older)
priv->flags |= FWUPD_INSTALL_FLAG_ALLOW_OLDER;
if (force)
priv->flags |= FWUPD_INSTALL_FLAG_FORCE;
/* load engine */
priv->engine = fu_engine_new (FU_APP_FLAGS_NO_IDLE_SOURCES);
g_signal_connect (priv->engine, "device-added",