Stdout: scons: Entering directory `/home/runner/.ufbt/current/scripts/ufbt' CC /tmp/tmprepdk5av/code/cli/plugins/timezone/timezone.c CC /tmp/tmprepdk5av/code/cli/cli_shared_methods.c CC /tmp/tmprepdk5av/code/cli/plugins/version/version.c CC /tmp/tmprepdk5av/code/cli/plugins/help/help.c Stderr: In file included from /tmp/tmprepdk5av/code/cli/plugins/timezone/timezone.c:6: /tmp/tmprepdk5av/code/cli/plugins/timezone/../../cli_plugin_interface.h:12:47: error: unknown type name 'Cli' 12 | void (*handle)(PluginState*, FuriString*, Cli*); | ^~~ /tmp/tmprepdk5av/code/cli/plugins/timezone/../../cli_plugin_interface.h:13:1: error: no semicolon at end of struct or union [-Werror] 13 | } CliPlugin; | ^ In file included from /tmp/tmprepdk5av/code/cli/plugins/timezone/timezone.c:7: /tmp/tmprepdk5av/code/cli/plugins/timezone/../../cli_shared_methods.h:17:69: error: unknown type name 'Cli' 17 | bool totp_cli_ensure_authenticated(const PluginState* plugin_state, Cli* cli); | ^~~ /tmp/tmprepdk5av/code/cli/plugins/timezone/../../cli_shared_methods.h:32:25: error: unknown type name 'Cli' 32 | bool totp_cli_read_line(Cli* cli, FuriString* out_str, bool mask_user_input); | ^~~ /tmp/tmprepdk5av/code/cli/plugins/timezone/timezone.c:9:65: error: unknown type name 'Cli' 9 | static void handle(PluginState* plugin_state, FuriString* args, Cli* cli) { | ^~~ /tmp/tmprepdk5av/code/cli/plugins/timezone/timezone.c:39:72: error: 'CliPlugin' has no member named 'handle' 39 | static const CliPlugin plugin = {.name = "TOTP CLI Plugin: Timezone", .handle = &handle}; | ^~~~~~ /tmp/tmprepdk5av/code/cli/plugins/timezone/timezone.c:39:82: error: 'handle' undeclared here (not in a function) 39 | static const CliPlugin plugin = {.name = "TOTP CLI Plugin: Timezone", .handle = &handle}; | ^~~~~~ /tmp/tmprepdk5av/code/cli/plugins/timezone/timezone.c:39:81: error: excess elements in struct initializer [-Werror] 39 | static const CliPlugin plugin = {.name = "TOTP CLI Plugin: Timezone", .handle = &handle}; | ^ /tmp/tmprepdk5av/code/cli/plugins/timezone/timezone.c:39:81: note: (near initialization for 'plugin') cc1: all warnings being treated as errors scons: *** [/home/runner/.ufbt/build/totp_cli_timezone_plugin/cli/plugins/timezone/timezone.o] Error 1 In file included from /tmp/tmprepdk5av/code/cli/cli_shared_methods.c:1: /tmp/tmprepdk5av/code/cli/cli_shared_methods.h:17:69: error: unknown type name 'Cli' 17 | bool totp_cli_ensure_authenticated(const PluginState* plugin_state, Cli* cli); | ^~~ /tmp/tmprepdk5av/code/cli/cli_shared_methods.h:32:25: error: unknown type name 'Cli' 32 | bool totp_cli_read_line(Cli* cli, FuriString* out_str, bool mask_user_input); | ^~~ /tmp/tmprepdk5av/code/cli/cli_shared_methods.c:7:69: error: unknown type name 'Cli' 7 | bool totp_cli_ensure_authenticated(const PluginState* plugin_state, Cli* cli) { | ^~~ /tmp/tmprepdk5av/code/cli/cli_shared_methods.c:34:25: error: unknown type name 'Cli' 34 | bool totp_cli_read_line(Cli* cli, FuriString* out_str, bool mask_user_input) { | ^~~ In file included from /tmp/tmprepdk5av/code/cli/plugins/help/help.c:6: /tmp/tmprepdk5av/code/cli/plugins/help/../../cli_plugin_interface.h:12:47: error: unknown type name 'Cli' 12 | void (*handle)(PluginState*, FuriString*, Cli*); | ^~~ /tmp/tmprepdk5av/code/cli/plugins/help/../../cli_plugin_interface.h:13:1: error: no semicolon at end of struct or union [-Werror] 13 | } CliPlugin; | ^ scons: *** [/home/runner/.ufbt/build/totp_cli_timezone_plugin/cli/cli_shared_methods.o] Error 1 /tmp/tmprepdk5av/code/cli/plugins/help/help.c:8:65: error: unknown type name 'Cli' 8 | static void handle(PluginState* plugin_state, FuriString* args, Cli* cli) { | ^~~ /tmp/tmprepdk5av/code/cli/plugins/help/help.c:32:68: error: 'CliPlugin' has no member named 'handle' 32 | static const CliPlugin plugin = {.name = "TOTP CLI Plugin: Help", .handle = &handle}; | ^~~~~~ In file included from /tmp/tmprepdk5av/code/cli/plugins/version/version.c:3: /tmp/tmprepdk5av/code/cli/plugins/version/../../cli_plugin_interface.h:12:47: error: unknown type name 'Cli' 12 | void (*handle)(PluginState*, FuriString*, Cli*); | ^~~ /tmp/tmprepdk5av/code/cli/plugins/version/../../cli_plugin_interface.h:13:1: error: no semicolon at end of struct or union [-Werror] 13 | } CliPlugin; | ^ /tmp/tmprepdk5av/code/cli/plugins/version/version.c:6:65: error: unknown type name 'Cli' 6 | static void handle(PluginState* plugin_state, FuriString* args, Cli* cli) { | ^~~ /tmp/tmprepdk5av/code/cli/plugins/version/version.c:22:71: error: 'CliPlugin' has no member named 'handle' 22 | static const CliPlugin plugin = {.name = "TOTP CLI Plugin: Version", .handle = &handle}; | ^~~~~~ /tmp/tmprepdk5av/code/cli/plugins/help/help.c:32:78: error: 'handle' undeclared here (not in a function) 32 | static const CliPlugin plugin = {.name = "TOTP CLI Plugin: Help", .handle = &handle}; | ^~~~~~ /tmp/tmprepdk5av/code/cli/plugins/help/help.c:32:77: error: excess elements in struct initializer [-Werror] 32 | static const CliPlugin plugin = {.name = "TOTP CLI Plugin: Help", .handle = &handle}; | ^ /tmp/tmprepdk5av/code/cli/plugins/help/help.c:32:77: note: (near initialization for 'plugin') cc1: all warnings being treated as errors /tmp/tmprepdk5av/code/cli/plugins/version/version.c:22:81: error: 'handle' undeclared here (not in a function) 22 | static const CliPlugin plugin = {.name = "TOTP CLI Plugin: Version", .handle = &handle}; | ^~~~~~ /tmp/tmprepdk5av/code/cli/plugins/version/version.c:22:80: error: excess elements in struct initializer [-Werror] 22 | static const CliPlugin plugin = {.name = "TOTP CLI Plugin: Version", .handle = &handle}; | ^ /tmp/tmprepdk5av/code/cli/plugins/version/version.c:22:80: note: (near initialization for 'plugin') cc1: all warnings being treated as errors scons: *** [/home/runner/.ufbt/build/totp_cli_help_plugin/cli/plugins/help/help.o] Error 1 scons: *** [/home/runner/.ufbt/build/totp_cli_version_plugin/cli/plugins/version/version.o] Error 1