xref: /haiku/src/apps/debugger/user_interface/cli/commands/CliDebugReportCommand.cpp (revision c14bca2958fb7b0c34d5464ccfdd87038f909a0c)
1 /*
2  * Copyright 2012, Rene Gollent, rene@gollent.com.
3  * Distributed under the terms of the MIT License.
4  */
5 
6 
7 #include "CliDebugReportCommand.h"
8 
9 #include <Entry.h>
10 #include <FindDirectory.h>
11 #include <Path.h>
12 #include <String.h>
13 
14 #include "CliContext.h"
15 #include "UiUtils.h"
16 #include "UserInterface.h"
17 
18 
CliDebugReportCommand()19 CliDebugReportCommand::CliDebugReportCommand()
20 	:
21 	CliCommand("save debug report",
22 		"%s\n"
23 		"Saves a debug information report for the current team.")
24 {
25 }
26 
27 
28 void
Execute(int argc,const char * const * argv,CliContext & context)29 CliDebugReportCommand::Execute(int argc, const char* const* argv, CliContext& context)
30 {
31 	BPath path;
32 	if (argc > 1) {
33 		path.SetTo(argv[1]);
34 		if (path.InitCheck() != B_OK) {
35 			printf("Invalid report path %s given.\n", argv[1]);
36 			return;
37 		}
38 	} else {
39 		char buffer[B_FILE_NAME_LENGTH];
40 		UiUtils::ReportNameForTeam(context.GetTeam(), buffer, sizeof(buffer));
41 		find_directory(B_DESKTOP_DIRECTORY, &path);
42 		path.Append(buffer);
43 	}
44 
45 	entry_ref ref;
46 	if (get_ref_for_path(path.Path(), &ref) == B_OK) {
47 		printf("Saving debug information report to %s...\n", path.Path());
48 		context.GetUserInterfaceListener()->DebugReportRequested(&ref);
49 	}
50 }
51