|
7 | 7 | //
|
8 | 8 |
|
9 | 9 | #import<Foundation/Foundation.h>
|
| 10 | +#import<libgen.h> |
| 11 | + |
10 | 12 | #import"AGCatalogParser.h"
|
11 | 13 |
|
12 | 14 | intmain(int argc,constchar * argv[])
|
13 | 15 | {
|
14 | 16 | @autoreleasepool {
|
15 |
| -dispatch_group_t group =dispatch_group_create(); |
16 |
| - |
17 |
| -NSInteger index =0; |
18 |
| -for (NSString *argument in [[NSProcessInfoprocessInfo]arguments]) { |
19 |
| -if (index++ ==0) { |
20 |
| -continue; |
| 17 | +char opt = -1; |
| 18 | +NSURL *searchURL =nil; |
| 19 | +NSString *classPrefix =@""; |
| 20 | +NSMutableArray *inputURLs = [NSMutableArrayarray]; |
| 21 | + |
| 22 | +while ((opt =getopt(argc, (char *const*)argv,"o:f:p:h")) != -1) { |
| 23 | +switch (opt) { |
| 24 | +case'h': { |
| 25 | +printf("Usage:%s [-o <path>] [-f <path>] [-p <prefix>] [<paths>]\n",basename((char *)argv[0])); |
| 26 | +printf("%s -h\n\n",basename((char *)argv[0])); |
| 27 | +printf("Options:\n"); |
| 28 | +printf(" -o <path> Output files at <path>\n"); |
| 29 | +printf(" -f <path> Search for *.xcassets folders starting from <path>\n"); |
| 30 | +printf(" -p <prefix> Use <prefix> as the class prefix in the generated code\n"); |
| 31 | +printf(" -h Print this help and exit\n"); |
| 32 | +printf(" <paths> Input files; this and/or -f are required.\n"); |
| 33 | +return0; |
| 34 | + } |
| 35 | + |
| 36 | +case'o': { |
| 37 | +NSString *outputPath = [[NSStringalloc]initWithUTF8String:optarg]; |
| 38 | + outputPath = [outputPathstringByExpandingTildeInPath]; |
| 39 | + [[NSFileManagerdefaultManager]changeCurrentDirectoryPath:outputPath]; |
| 40 | +break; |
| 41 | + } |
| 42 | + |
| 43 | +case'f': { |
| 44 | +NSString *searchPath = [[NSStringalloc]initWithUTF8String:optarg]; |
| 45 | + searchPath = [searchPathstringByExpandingTildeInPath]; |
| 46 | + searchURL = [NSURLfileURLWithPath:searchPath]; |
| 47 | +break; |
| 48 | + } |
| 49 | + |
| 50 | +case'p': { |
| 51 | + classPrefix = [[NSStringalloc]initWithUTF8String:optarg]; |
| 52 | +break; |
| 53 | + } |
| 54 | + |
| 55 | +default: |
| 56 | +break; |
21 | 57 | }
|
22 |
| - |
| 58 | + } |
| 59 | + |
| 60 | +for (int index = optind; index < argc; index++) { |
| 61 | +NSString *inputPath = [[NSStringalloc]initWithUTF8String:argv[index]]; |
| 62 | + inputPath = [inputPathstringByExpandingTildeInPath]; |
| 63 | + [inputURLsaddObject:[NSURLfileURLWithPath:inputPath]]; |
| 64 | + } |
| 65 | + |
| 66 | +if (searchURL) { |
| 67 | +NSDirectoryEnumerator *enumerator = [[NSFileManagerdefaultManager]enumeratorAtURL:searchURLincludingPropertiesForKeys:@[NSURLNameKey]options:0errorHandler:NULL]; |
| 68 | +for (NSURL *url in enumerator) { |
| 69 | +if ([url.pathExtensionisEqualToString:@"xcassets"]) { |
| 70 | + [inputURLsaddObject:url]; |
| 71 | + } |
| 72 | + } |
| 73 | + } |
| 74 | + |
| 75 | +dispatch_group_t group =dispatch_group_create(); |
| 76 | + |
| 77 | +for (NSURL *url in inputURLs) { |
23 | 78 | dispatch_group_enter(group);
|
24 |
| - AGCatalogParser *parser = [AGCatalogParserassetCatalogAtURL:[NSURLfileURLWithPath:argument]]; |
25 |
| - parser.classPrefix =@"WQ"; |
| 79 | + AGCatalogParser *parser = [AGCatalogParserassetCatalogAtURL:url]; |
| 80 | + parser.classPrefix =classPrefix; |
26 | 81 | [parserstartWithCompletionHandler:^{
|
27 | 82 | dispatch_group_leave(group);
|
28 | 83 | }];
|
29 | 84 | }
|
30 |
| -
|
| 85 | + |
31 | 86 | dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
|
32 | 87 | }
|
33 | 88 | return0;
|
|