Skeleton of CLI parsing for a PDS implementation
pdscli.m
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}