// // pdscli.m // Skeleton of CLI parsing for a PDS implementation // // https://developer.apple.com/documentation/foundation/processinfo #import @interface PDSCLIController : NSObject - (NSInteger)runWithArguments:(NSArray *)arguments; - (void)printHelp; @end @implementation PDSCLIController - (NSInteger)runWithArguments:(NSArray *)arguments { if(arguments.count == 0) { [self printHelp]; return 1; } return 0; } - (void)printHelp { printf("No arguments given.\n"); } @end int main(int argc, const char * argv[]) { @autoreleasepool { NSArray *arguments = [[NSProcessInfo processInfo] arguments]; NSDictionary *environment = [[NSProcessInfo processInfo] environment]; NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSInteger port = [defaults integerForKey:@"port"]; NSString *dataDirectory = [defaults stringForKey:@"data-dir"]; BOOL isVerboseLogging = [arguments containsObject:@"-verbose"]; // doesn't work for -verbose NO BOOL isHelp = [arguments containsObject:@"-help"]; NSLog(@"%d", (int)port); NSLog(@"%@", dataDirectory); NSLog(@"%@", isVerboseLogging ? @"YES" : @"NO"); NSLog(@"%@", isHelp ? @"YES" : @"NO"); NSString *shell = environment[@"SHELL"]; NSLog(@"%@", shell); NSArray *commandlineArguments = [arguments subarrayWithRange:NSMakeRange(1, arguments.count - 1)]; PDSCLIController *cli = [[PDSCLIController alloc] init]; NSInteger exitCode = [cli runWithArguments:commandlineArguments]; return (int)exitCode; } return EXIT_SUCCESS; }