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