blob: 386e898124c647130973a4090c62a08d2c64ef3f [file] [log] [blame]
/*
* Copyright 2017 Richard Hughes <richard@hughsie.com>
*
* SPDX-License-Identifier: LGPL-2.1-or-later
*/
#pragma once
#include <fwupdplugin.h>
#include <json-glib/json-glib.h>
#include "fu-console.h"
/* custom return codes */
#define EXIT_NOTHING_TO_DO 2
#define EXIT_NOT_FOUND 3
#define EXIT_NOT_REACHABLE 101 /* ENETUNREACH */
/* this is only valid for tools */
#define FWUPD_ERROR_INVALID_ARGS (FWUPD_ERROR_LAST + 1)
typedef enum {
FU_UTIL_CMD_FLAG_NONE = 0,
FU_UTIL_CMD_FLAG_IS_ALIAS = 1 << 0,
} FuUtilCmdFlags;
typedef struct FuUtil FuUtil;
typedef gboolean (*FuUtilCmdFunc)(FuUtil *util, gchar **values, GError **error) G_GNUC_NON_NULL(1);
typedef struct {
gchar *name;
gchar *arguments;
gchar *description;
FuUtilCmdFlags flags;
FuUtilCmdFunc callback;
} FuUtilCmd;
typedef enum {
FU_SECURITY_ATTR_TO_STRING_FLAG_NONE = 0,
FU_SECURITY_ATTR_TO_STRING_FLAG_SHOW_OBSOLETES = 1 << 0,
FU_SECURITY_ATTR_TO_STRING_FLAG_SHOW_URLS = 1 << 1,
/*< private >*/
FU_SECURITY_ATTR_TO_STRING_FLAG_LAST
} FuSecurityAttrToStringFlags;
/* node with refcounted data */
typedef GNode FuUtilNode;
void
fu_util_print_node(FuConsole *console, FwupdClient *client, FuUtilNode *n) G_GNUC_NON_NULL(1, 2, 3);
void
fu_util_free_node(FuUtilNode *n) G_GNUC_NON_NULL(1);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(FuUtilNode, fu_util_free_node)
gboolean
fu_util_is_interesting_device(GPtrArray *devs, FwupdDevice *dev) G_GNUC_NON_NULL(1, 2);
gchar *
fu_util_get_user_cache_path(const gchar *fn) G_GNUC_NON_NULL(1);
gboolean
fu_util_prompt_warning(FuConsole *console,
FwupdDevice *device,
FwupdRelease *release,
const gchar *machine,
GError **error) G_GNUC_NON_NULL(1, 2, 3, 4);
gboolean
fu_util_prompt_warning_fde(FuConsole *console, FwupdDevice *dev, GError **error) G_GNUC_NON_NULL(1);
gboolean
fu_util_modify_remote_warning(FuConsole *console,
FwupdRemote *remote,
gboolean assume_yes,
GError **error) G_GNUC_NON_NULL(1, 2);
gboolean
fu_util_prompt_complete(FuConsole *console, FwupdDeviceFlags flags, gboolean prompt, GError **error)
G_GNUC_NON_NULL(1);
GPtrArray *
fu_util_cmd_array_new(void);
void
fu_util_cmd_array_add(GPtrArray *array,
const gchar *name,
const gchar *arguments,
const gchar *description,
FuUtilCmdFunc callback) G_GNUC_NON_NULL(1, 2, 4);
gchar *
fu_util_cmd_array_to_string(GPtrArray *array) G_GNUC_NON_NULL(1);
void
fu_util_cmd_array_sort(GPtrArray *array) G_GNUC_NON_NULL(1);
gboolean
fu_util_cmd_array_run(GPtrArray *array,
FuUtil *self,
const gchar *command,
gchar **values,
GError **error) G_GNUC_NON_NULL(1, 2);
const gchar *
fu_util_branch_for_display(const gchar *branch);
const gchar *
fu_util_request_get_message(FwupdRequest *req) G_GNUC_NON_NULL(1);
gboolean
fu_util_parse_filter_device_flags(const gchar *filter,
FwupdDeviceFlags *include,
FwupdDeviceFlags *exclude,
GError **error) G_GNUC_NON_NULL(1, 2, 3);
gboolean
fu_util_parse_filter_release_flags(const gchar *filter,
FwupdReleaseFlags *include,
FwupdReleaseFlags *exclude,
GError **error) G_GNUC_NON_NULL(1, 2, 3);
gchar *
fu_util_device_to_string(FwupdClient *client, FwupdDevice *dev, guint idt) G_GNUC_NON_NULL(1, 2);
gchar *
fu_util_plugin_to_string(FwupdPlugin *plugin, guint idt) G_GNUC_NON_NULL(1);
gchar *
fu_util_plugin_flag_to_string(FwupdPluginFlags plugin_flag);
gint
fu_util_plugin_name_sort_cb(FwupdPlugin **item1, FwupdPlugin **item2);
gchar *
fu_util_device_problem_to_string(FwupdClient *client, FwupdDevice *dev, FwupdDeviceProblem problem)
G_GNUC_NON_NULL(1, 2);
gchar *
fu_util_security_attrs_to_string(GPtrArray *attrs, FuSecurityAttrToStringFlags flags)
G_GNUC_NON_NULL(1);
gchar *
fu_util_security_events_to_string(GPtrArray *events, FuSecurityAttrToStringFlags flags)
G_GNUC_NON_NULL(1);
gchar *
fu_util_security_issues_to_string(GPtrArray *devices) G_GNUC_NON_NULL(1);
gint
fu_util_sort_devices_by_flags_cb(gconstpointer a, gconstpointer b) G_GNUC_NON_NULL(1, 2);
gboolean
fu_util_switch_branch_warning(FuConsole *console,
FwupdDevice *dev,
FwupdRelease *rel,
gboolean assume_yes,
GError **error) G_GNUC_NON_NULL(1, 2, 3);
void
fu_util_show_unsupported_warning(FuConsole *console) G_GNUC_NON_NULL(1);
gboolean
fu_util_is_url(const gchar *perhaps_url) G_GNUC_NON_NULL(1);
gboolean
fu_util_print_builder(FuConsole *console, JsonBuilder *builder, GError **error)
G_GNUC_NON_NULL(1, 2);
void
fu_util_print_error_as_json(FuConsole *console, const GError *error) G_GNUC_NON_NULL(1);
gchar *
fu_util_project_versions_to_string(GHashTable *metadata) G_GNUC_NON_NULL(1);
gboolean
fu_util_project_versions_as_json(FuConsole *console, GHashTable *metadata, GError **error)
G_GNUC_NON_NULL(1, 2);
const gchar *
fu_util_get_prgname(const gchar *argv0) G_GNUC_NON_NULL(1);