Skeleton of CLI parsing for a PDS implementation
pdscli.m
58 lines 1.8 kB view raw
1// 2// pdscli.m 3// Skeleton of CLI parsing for a PDS implementation 4// 5 6// https://developer.apple.com/documentation/foundation/processinfo 7 8#import <Foundation/Foundation.h> 9 10 11@interface PDSCLIController : NSObject 12 13- (NSInteger)runWithArguments:(NSArray<NSString *> *)arguments; 14- (void)printHelp; 15 16@end 17 18@implementation PDSCLIController 19 20- (NSInteger)runWithArguments:(NSArray<NSString *> *)arguments { 21 if(arguments.count == 0) { 22 [self printHelp]; 23 return 1; 24 } 25 return 0; 26} 27 28- (void)printHelp { 29 printf("No arguments given.\n"); 30} 31 32@end 33 34 35int main(int argc, const char * argv[]) { 36 @autoreleasepool { 37 NSArray<NSString *> *arguments = [[NSProcessInfo processInfo] arguments]; 38 NSDictionary<NSString *, NSString *> *environment = [[NSProcessInfo processInfo] environment]; 39 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 40 NSInteger port = [defaults integerForKey:@"port"]; 41 NSString *dataDirectory = [defaults stringForKey:@"data-dir"]; 42 BOOL isVerboseLogging = [arguments containsObject:@"-verbose"]; // doesn't work for -verbose NO 43 BOOL isHelp = [arguments containsObject:@"-help"]; 44 NSLog(@"%d", (int)port); 45 NSLog(@"%@", dataDirectory); 46 NSLog(@"%@", isVerboseLogging ? @"YES" : @"NO"); 47 NSLog(@"%@", isHelp ? @"YES" : @"NO"); 48 49 NSString *shell = environment[@"SHELL"]; 50 NSLog(@"%@", shell); 51 NSArray *commandlineArguments = [arguments subarrayWithRange:NSMakeRange(1, arguments.count - 1)]; 52 PDSCLIController *cli = [[PDSCLIController alloc] init]; 53 NSInteger exitCode = [cli runWithArguments:commandlineArguments]; 54 55 return (int)exitCode; 56 } 57 return EXIT_SUCCESS; 58}