diff --git a/src/nix/main.cc b/src/nix/main.cc index 350897356b5f..5137027fbae4 100644 --- a/src/nix/main.cc +++ b/src/nix/main.cc @@ -414,6 +414,7 @@ void mainWrapped(int argc, char ** argv) sentry_options_set_auto_session_tracking(options, false); sentry_options_set_handler_path(options, CRASHPAD_HANDLER_PATH); sentry_init(options); + sentry_set_tag("nix_command", argc > 0 ? std::string(baseNameOf(argv[0])).c_str() : ""); sentryEnabled = true; } @@ -569,16 +570,17 @@ void mainWrapped(int argc, char ** argv) printTalkative("Nix %s", version()); + std::vector subcommand; + MultiCommand * command = &args; + while (command) { + if (command && command->command) { + subcommand.push_back(command->command->first); + command = dynamic_cast(&*command->command->second); + } else + break; + } + if (args.helpRequested) { - std::vector subcommand; - MultiCommand * command = &args; - while (command) { - if (command && command->command) { - subcommand.push_back(command->command->first); - command = dynamic_cast(&*command->command->second); - } else - break; - } showHelp(subcommand, args); return; } @@ -615,6 +617,11 @@ void mainWrapped(int argc, char ** argv) evalSettings.pureEval = false; } +#if HAVE_SENTRY + if (sentryEnabled) + sentry_set_tag("nix_subcommand", concatStringsSep(" ", subcommand).c_str()); +#endif + try { args.command->second->run(); } catch (eval_cache::CachedEvalError & e) {