Richard Hughes | 02c90d8 | 2018-08-09 12:13:03 +0100 | [diff] [blame] | 1 | /* |
Richard Hughes | 5c9b1fc | 2021-01-07 14:20:49 +0000 | [diff] [blame] | 2 | * Copyright (C) 2017 Richard Hughes <richard@hughsie.com> |
Richard Hughes | f761640 | 2018-05-18 09:53:18 +0100 | [diff] [blame] | 3 | * |
Mario Limonciello | 51308e6 | 2018-05-28 20:05:46 -0500 | [diff] [blame] | 4 | * SPDX-License-Identifier: LGPL-2.1+ |
Richard Hughes | f761640 | 2018-05-18 09:53:18 +0100 | [diff] [blame] | 5 | */ |
| 6 | |
Richard Hughes | bfd946e | 2019-02-09 08:21:40 +0000 | [diff] [blame] | 7 | #pragma once |
Richard Hughes | f761640 | 2018-05-18 09:53:18 +0100 | [diff] [blame] | 8 | |
| 9 | #include <glib.h> |
Mario Limonciello | d1775bc | 2018-07-17 00:28:52 -0500 | [diff] [blame] | 10 | #include <fwupd.h> |
Mario Limonciello | 75835b4 | 2021-01-21 12:47:32 -0600 | [diff] [blame] | 11 | #include "fwupd-security-attr-private.h" |
Richard Hughes | f761640 | 2018-05-18 09:53:18 +0100 | [diff] [blame] | 12 | |
Mario Limonciello | 3f243a9 | 2019-01-21 22:05:23 -0600 | [diff] [blame] | 13 | /* this is only valid for tools */ |
| 14 | #define FWUPD_ERROR_INVALID_ARGS (FWUPD_ERROR_LAST+1) |
| 15 | |
Richard Hughes | c77e111 | 2019-03-01 10:16:26 +0000 | [diff] [blame] | 16 | typedef struct FuUtilPrivate FuUtilPrivate; |
| 17 | typedef gboolean (*FuUtilCmdFunc) (FuUtilPrivate *util, |
| 18 | gchar **values, |
| 19 | GError **error); |
| 20 | typedef struct { |
| 21 | gchar *name; |
| 22 | gchar *arguments; |
| 23 | gchar *description; |
| 24 | FuUtilCmdFunc callback; |
| 25 | } FuUtilCmd; |
| 26 | |
Richard Hughes | 5c82b94 | 2020-09-14 12:24:06 +0100 | [diff] [blame] | 27 | typedef enum { |
| 28 | FU_SECURITY_ATTR_TO_STRING_FLAG_NONE = 0, |
| 29 | FU_SECURITY_ATTR_TO_STRING_FLAG_SHOW_OBSOLETES = 1 << 0, |
| 30 | FU_SECURITY_ATTR_TO_STRING_FLAG_SHOW_URLS = 1 << 1, |
| 31 | /*< private >*/ |
| 32 | FU_SECURITY_ATTR_TO_STRING_FLAG_LAST |
| 33 | } FuSecurityAttrToStringFlags; |
| 34 | |
Richard Hughes | 7bcb8d4 | 2020-10-08 15:47:47 +0100 | [diff] [blame] | 35 | typedef enum { |
| 36 | FU_UTIL_CLI_COLOR_BLACK = 30, |
| 37 | FU_UTIL_TERM_COLOR_RED = 31, |
| 38 | FU_UTIL_CLI_COLOR_GREEN = 32, |
| 39 | FU_UTIL_CLI_COLOR_YELLOW = 33, |
| 40 | FU_UTIL_CLI_COLOR_BLUE = 34, |
| 41 | FU_UTIL_CLI_COLOR_MAGENTA = 35, |
| 42 | FU_UTIL_CLI_COLOR_CYAN = 36, |
| 43 | FU_UTIL_CLI_COLOR_WHITE = 37, |
| 44 | } FuUtilTermColor; |
| 45 | |
Richard Hughes | f761640 | 2018-05-18 09:53:18 +0100 | [diff] [blame] | 46 | void fu_util_print_data (const gchar *title, |
| 47 | const gchar *msg); |
Richard Hughes | 7bcb8d4 | 2020-10-08 15:47:47 +0100 | [diff] [blame] | 48 | gchar *fu_util_term_format (const gchar *text, |
| 49 | FuUtilTermColor fg_color); |
Richard Hughes | f761640 | 2018-05-18 09:53:18 +0100 | [diff] [blame] | 50 | guint fu_util_prompt_for_number (guint maxnum); |
| 51 | gboolean fu_util_prompt_for_boolean (gboolean def); |
| 52 | |
Mario Limonciello | 4250d9d | 2019-08-29 09:53:44 -0500 | [diff] [blame] | 53 | void fu_util_print_tree (GNode *n, gpointer data); |
Mario Limonciello | d1775bc | 2018-07-17 00:28:52 -0500 | [diff] [blame] | 54 | gboolean fu_util_is_interesting_device (FwupdDevice *dev); |
Richard Hughes | 798cb06 | 2018-08-30 14:17:42 +0100 | [diff] [blame] | 55 | gchar *fu_util_get_user_cache_path (const gchar *fn); |
Mario Limonciello | 2d4b7a5 | 2018-09-12 22:08:04 -0500 | [diff] [blame] | 56 | gchar *fu_util_get_versions (void); |
| 57 | |
Richard Hughes | e69f0f5 | 2021-04-22 11:10:23 +0100 | [diff] [blame] | 58 | void fu_util_warning_box (const gchar *title, |
| 59 | const gchar *body, |
Richard Hughes | acfa4ef | 2019-05-01 12:18:25 +0100 | [diff] [blame] | 60 | guint width); |
Mario Limonciello | 98b9516 | 2019-10-30 09:20:43 -0500 | [diff] [blame] | 61 | gboolean fu_util_prompt_warning (FwupdDevice *device, |
| 62 | const gchar *machine, |
| 63 | GError **error); |
Mario Limonciello | 3f243a9 | 2019-01-21 22:05:23 -0600 | [diff] [blame] | 64 | gboolean fu_util_prompt_complete (FwupdDeviceFlags flags, |
| 65 | gboolean prompt, |
| 66 | GError **error); |
Richard Hughes | 4499d19 | 2019-03-08 11:44:44 +0000 | [diff] [blame] | 67 | gboolean fu_util_update_reboot (GError **error); |
Richard Hughes | 2d3287a | 2019-02-10 17:32:14 +0000 | [diff] [blame] | 68 | |
Richard Hughes | c77e111 | 2019-03-01 10:16:26 +0000 | [diff] [blame] | 69 | GPtrArray *fu_util_cmd_array_new (void); |
| 70 | void fu_util_cmd_array_add (GPtrArray *array, |
| 71 | const gchar *name, |
| 72 | const gchar *arguments, |
| 73 | const gchar *description, |
| 74 | FuUtilCmdFunc callback); |
| 75 | gchar *fu_util_cmd_array_to_string (GPtrArray *array); |
| 76 | void fu_util_cmd_array_sort (GPtrArray *array); |
| 77 | gboolean fu_util_cmd_array_run (GPtrArray *array, |
| 78 | FuUtilPrivate *priv, |
| 79 | const gchar *command, |
| 80 | gchar **values, |
| 81 | GError **error); |
Richard Hughes | 02ac92c | 2019-03-29 17:56:46 +0000 | [diff] [blame] | 82 | gchar *fu_util_release_get_name (FwupdRelease *release); |
Richard Hughes | 89ee9ed | 2021-01-20 16:15:29 +0000 | [diff] [blame] | 83 | const gchar *fu_util_branch_for_display (const gchar *branch); |
Richard Hughes | c77e111 | 2019-03-01 10:16:26 +0000 | [diff] [blame] | 84 | |
Richard Hughes | 3d00522 | 2019-05-17 14:02:41 +0100 | [diff] [blame] | 85 | const gchar *fu_util_get_systemd_unit (void); |
Mario Limonciello | 88f8b7f | 2019-05-07 15:52:39 -0500 | [diff] [blame] | 86 | gboolean fu_util_using_correct_daemon (GError **error); |
Richard Hughes | fb9cfff | 2019-04-17 15:01:03 +0100 | [diff] [blame] | 87 | |
Richard Hughes | 747f570 | 2019-08-06 14:27:26 +0100 | [diff] [blame] | 88 | gboolean fu_util_parse_filter_flags (const gchar *filter, |
| 89 | FwupdDeviceFlags *include, |
| 90 | FwupdDeviceFlags *exclude, |
| 91 | GError **error); |
Mario Limonciello | fee8f49 | 2019-08-18 12:16:07 -0500 | [diff] [blame] | 92 | gchar *fu_util_convert_description (const gchar *xml, |
| 93 | GError **error); |
Mario Limonciello | eb442ea | 2020-01-10 10:56:05 -0600 | [diff] [blame] | 94 | gchar *fu_util_time_to_str (guint64 tmp); |
| 95 | |
Mario Limonciello | fee8f49 | 2019-08-18 12:16:07 -0500 | [diff] [blame] | 96 | gchar *fu_util_device_to_string (FwupdDevice *dev, |
| 97 | guint idt); |
Richard Hughes | 7bcb8d4 | 2020-10-08 15:47:47 +0100 | [diff] [blame] | 98 | gchar *fu_util_plugin_to_string (FwupdPlugin *plugin, |
| 99 | guint idt); |
| 100 | const gchar *fu_util_plugin_flag_to_string (FwupdPluginFlags plugin_flag); |
Mario Limonciello | fee8f49 | 2019-08-18 12:16:07 -0500 | [diff] [blame] | 101 | gchar *fu_util_release_to_string (FwupdRelease *rel, |
| 102 | guint idt); |
Mario Limonciello | 4250d9d | 2019-08-29 09:53:44 -0500 | [diff] [blame] | 103 | gchar *fu_util_remote_to_string (FwupdRemote *remote, |
| 104 | guint idt); |
Richard Hughes | 5c82b94 | 2020-09-14 12:24:06 +0100 | [diff] [blame] | 105 | gchar *fu_util_security_attrs_to_string (GPtrArray *attrs, |
| 106 | FuSecurityAttrToStringFlags flags); |
Richard Hughes | 9b6d616 | 2020-07-07 16:24:57 +0100 | [diff] [blame] | 107 | gboolean fu_util_send_report (FwupdClient *client, |
Richard Hughes | 6d9ae62 | 2020-06-16 15:20:23 +0100 | [diff] [blame] | 108 | const gchar *report_uri, |
| 109 | const gchar *data, |
| 110 | const gchar *sig, |
| 111 | gchar **uri, |
| 112 | GError **error); |
Mario Limonciello | eb7be16 | 2020-07-01 15:38:47 -0500 | [diff] [blame] | 113 | gint fu_util_sort_devices_by_flags_cb (gconstpointer a, |
| 114 | gconstpointer b); |
Mario Limonciello | 02085a0 | 2020-09-11 14:59:35 -0500 | [diff] [blame] | 115 | gint fu_util_device_order_sort_cb (gconstpointer a, |
| 116 | gconstpointer b); |
Mario Limonciello | 02f2cc3 | 2020-10-20 15:39:47 -0500 | [diff] [blame] | 117 | |
| 118 | gboolean fu_util_switch_branch_warning (FwupdDevice *dev, |
| 119 | FwupdRelease *rel, |
| 120 | gboolean assume_yes, |
| 121 | GError **error); |
Mario Limonciello | bd60de1 | 2020-11-11 13:09:43 -0600 | [diff] [blame] | 122 | void fu_util_show_unsupported_warn (void); |
Richard Hughes | 3a73c34 | 2020-11-13 13:25:22 +0000 | [diff] [blame] | 123 | gboolean fu_util_is_url (const gchar *perhaps_url); |