From 64a82e245b886999bc44e514cb796344ce4c051b Mon Sep 17 00:00:00 2001 From: Keith Smiley Date: Sat, 8 Oct 2022 15:48:08 -0700 Subject: [PATCH] Add -compact mode for printing CLI like invocations This is useful for compact viewing as if you had run each command from the command line. I think this is more glanceable and grep-able when you're investigating specific commands. --- App/ProcessMonitor/main.h | 5 ++++- App/ProcessMonitor/main.m | 10 +++++++++- Library/Release/ProcessMonitor.h | 2 ++ Library/Source/Process.m | 11 +++++++++++ Library/Source/ProcessMonitor.h | 2 ++ 5 files changed, 28 insertions(+), 2 deletions(-) diff --git a/App/ProcessMonitor/main.h b/App/ProcessMonitor/main.h index 193213e..4242988 100644 --- a/App/ProcessMonitor/main.h +++ b/App/ProcessMonitor/main.h @@ -13,7 +13,7 @@ /* GLOBALS */ -//'skipAPple' flag +//'skipApple' flag BOOL skipApple = NO; //filter string @@ -22,6 +22,9 @@ NSString* filterBy = nil; //'prettyPrint' flag BOOL prettyPrint = NO; +//'compact' flag +BOOL compact = NO; + //'parseEnv' flag to capture environment variable information BOOL parseEnv = NO; diff --git a/App/ProcessMonitor/main.m b/App/ProcessMonitor/main.m index 45136ff..c7f9e1d 100644 --- a/App/ProcessMonitor/main.m +++ b/App/ProcessMonitor/main.m @@ -86,6 +86,9 @@ BOOL processArgs(NSArray* arguments) //init 'prettyPrint' flag prettyPrint = [arguments containsObject:@"-pretty"]; + + //init 'compact' flag + compact = [arguments containsObject:@"-compact"]; //init 'parseEnv' flag parseEnv = [arguments containsObject:@"-parseEnv"]; @@ -136,6 +139,7 @@ void usage() printf("\n%s (v%s) usage:\n", name.UTF8String, version.UTF8String); printf(" -h or -help display this usage info\n"); printf(" -pretty JSON output is 'pretty-printed'\n"); + printf(" -compact output is printed on a single line imitating a command line invocation\n"); printf(" -skipApple ignore Apple (platform) processes \n"); printf(" -parseEnv parse environment variable information\n"); printf(" -filter show events matching process name\n\n"); @@ -179,13 +183,17 @@ BOOL monitor() return; } } - + //pretty print? if(YES == prettyPrint) { //make me pretty! printf("%s\n", prettifyJSON(process.description).UTF8String); } + else if(YES == compact) + { + printf("%s\n", process.compactDescription.UTF8String); + } else { //output diff --git a/Library/Release/ProcessMonitor.h b/Library/Release/ProcessMonitor.h index 8504dbf..daff08d 100644 --- a/Library/Release/ProcessMonitor.h +++ b/Library/Release/ProcessMonitor.h @@ -120,4 +120,6 @@ typedef void (^ProcessCallbackBlock)(Process* _Nonnull); // flag controls code signing options -(id _Nullable)init:(es_message_t* _Nonnull)message csOption:(NSUInteger)csOption; +-(NSString* _Nonnull)compactDescription; + @end diff --git a/Library/Source/Process.m b/Library/Source/Process.m index 48da9c6..df1e40d 100644 --- a/Library/Source/Process.m +++ b/Library/Source/Process.m @@ -820,6 +820,17 @@ -(NSString *)description return description; } +-(NSString *)compactDescription { + if (self.arguments.count < 1) { + return self.path; + } + + NSArray* arguments = @[self.path]; + arguments = [arguments arrayByAddingObjectsFromArray: + [self.arguments subarrayWithRange:NSMakeRange(1, self.arguments.count - 1)]]; + return [arguments componentsJoinedByString:@" "]; +} + @end //helper function diff --git a/Library/Source/ProcessMonitor.h b/Library/Source/ProcessMonitor.h index f9c4fb9..22f0a4c 100644 --- a/Library/Source/ProcessMonitor.h +++ b/Library/Source/ProcessMonitor.h @@ -123,4 +123,6 @@ typedef void (^ProcessCallbackBlock)(Process* _Nonnull); // flag controls code signing options -(id _Nullable)init:(es_message_t* _Nonnull)message csOption:(NSUInteger)csOption parseEnv:(BOOL)parseEnv; +-(NSString* _Nonnull)compactDescription; + @end