50 lines
2.3 KiB
Objective-C
50 lines
2.3 KiB
Objective-C
#import "installer/FabricUtils.h"
|
|
#import "ModpackUtils.h"
|
|
|
|
@implementation ModpackUtils
|
|
|
|
+ (void)archive:(UZKArchive *)archive extractDirectory:(NSString *)dir toPath:(NSString *)path error:(NSError *__autoreleasing*)error {
|
|
[archive performOnFilesInArchive:^(UZKFileInfo *fileInfo, BOOL *stop) {
|
|
if (![fileInfo.filename hasPrefix:dir] ||
|
|
fileInfo.filename.length <= dir.length) {
|
|
return;
|
|
}
|
|
NSString *fileName = [fileInfo.filename substringFromIndex:dir.length+1];
|
|
NSString *destItemPath = [path stringByAppendingPathComponent:fileName];
|
|
NSString *destDirPath = fileInfo.isDirectory ? destItemPath : destItemPath.stringByDeletingLastPathComponent;
|
|
BOOL createdDir = [NSFileManager.defaultManager createDirectoryAtPath:destDirPath
|
|
withIntermediateDirectories:YES
|
|
attributes:nil error:error];
|
|
if (!createdDir) {
|
|
*stop = YES;
|
|
return;
|
|
} else if (fileInfo.isDirectory) {
|
|
return;
|
|
}
|
|
|
|
NSData *data = [archive extractData:fileInfo error:error];
|
|
BOOL written = [data writeToFile:destItemPath options:NSDataWritingAtomic error:error];
|
|
*stop = !data || !written;
|
|
if (!*stop) {
|
|
NSLog(@"[ModpackDL] Extracted %@", fileInfo.filename);
|
|
}
|
|
} error:error];
|
|
}
|
|
|
|
+ (NSDictionary *)infoForDependencies:(NSDictionary *)dependency {
|
|
NSMutableDictionary *info = [NSMutableDictionary new];
|
|
NSString *minecraftVersion = dependency[@"minecraft"];
|
|
if (dependency[@"forge"]) {
|
|
info[@"id"] = [NSString stringWithFormat:@"%@-forge-%@", minecraftVersion, dependency[@"forge"]];
|
|
} else if (dependency[@"fabric-loader"]) {
|
|
info[@"id"] = [NSString stringWithFormat:@"fabric-loader-%@-%@", dependency[@"fabric-loader"], minecraftVersion];
|
|
info[@"json"] = [NSString stringWithFormat:FabricUtils.endpoints[@"Fabric"][@"json"], minecraftVersion, dependency[@"fabric-loader"]];
|
|
} else if (dependency[@"quilt-loader"]) {
|
|
info[@"id"] = [NSString stringWithFormat:@"quilt-loader-%@-%@", dependency[@"quilt-loader"], minecraftVersion];
|
|
info[@"json"] = [NSString stringWithFormat:FabricUtils.endpoints[@"Quilt"][@"json"], minecraftVersion, dependency[@"quilt-loader"]];
|
|
}
|
|
return info;
|
|
}
|
|
|
|
@end
|