Skip to content

Commit

Permalink
added 'printplist' command
Browse files Browse the repository at this point in the history
  • Loading branch information
sreitshamer committed Feb 3, 2017
1 parent fad04da commit 857c185
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 0 deletions.
50 changes: 50 additions & 0 deletions ArqRestoreCommand.m
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ - (BOOL)executeWithArgc:(int)argc argv:(const char **)argv error:(NSError **)err
return [self listComputers:args error:error];
} else if ([cmd isEqualToString:@"listfolders"]) {
return [self listFolders:args error:error];
} else if ([cmd isEqualToString:@"printplist"]) {
return [self printPlist:args error:error];
} else if ([cmd isEqualToString:@"listtree"]) {
return [self listTree:args error:error];
} else if ([cmd isEqualToString:@"restore"]) {
Expand Down Expand Up @@ -279,6 +281,54 @@ - (BOOL)listFolders:(NSArray *)args error:(NSError **)error {
}
return YES;
}
- (BOOL)printPlist:(NSArray *)args error:(NSError **)error {
if ([args count] != 6) {
SETNSERROR([self errorDomain], ERROR_USAGE, @"invalid arguments");
return NO;
}
Target *target = [[TargetFactory sharedTargetFactory] targetWithNickname:[args objectAtIndex:2]];
if (target == nil) {
SETNSERROR([self errorDomain], ERROR_NOT_FOUND, @"target not found");
return NO;
}

NSString *theComputerUUID = [args objectAtIndex:3];
NSString *theEncryptionPassword = [args objectAtIndex:4];
NSString *theBucketUUID = [args objectAtIndex:5];

BackupSet *backupSet = [self backupSetForTarget:target computerUUID:theComputerUUID error:error];
if (backupSet == nil) {
return NO;
}

// Reset Target:
target = [backupSet target];

NSArray *buckets = [Bucket bucketsWithTarget:target computerUUID:theComputerUUID encryptionPassword:theEncryptionPassword targetConnectionDelegate:nil error:error];
if (buckets == nil) {
return NO;
}
Bucket *matchingBucket = nil;
for (Bucket *bucket in buckets) {
if ([[bucket bucketUUID] isEqualToString:theBucketUUID]) {
matchingBucket = bucket;
break;
}
}
if (matchingBucket == nil) {
SETNSERROR([self errorDomain], ERROR_NOT_FOUND, @"folder %@ not found", theBucketUUID);
return NO;
}

printf("target %s\n", [[target endpointDisplayName] UTF8String]);
printf("computer %s\n", [theComputerUUID UTF8String]);
printf("folder %s\n", [theBucketUUID UTF8String]);

NSData *xmlData = [matchingBucket toXMLData];
NSString *xmlString = [[[NSString alloc] initWithData:xmlData encoding:NSUTF8StringEncoding] autorelease];
printf("%s\n", [xmlString UTF8String]);
return YES;
}
- (BOOL)listTree:(NSArray *)args error:(NSError **)error {
if ([args count] != 6) {
SETNSERROR([self errorDomain], ERROR_USAGE, @"invalid arguments");
Expand Down
1 change: 1 addition & 0 deletions arq_restore.m
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ static void printUsage(const char *exeName) {
fprintf(stderr, "\n");
fprintf(stderr, "\t%s [-l loglevel] listcomputers <target_nickname>\n", exeName);
fprintf(stderr, "\t%s [-l loglevel] listfolders <target_nickname> <computer_uuid> <encryption_password>\n", exeName);
fprintf(stderr, "\t%s [-l loglevel] printplist <target_nickname> <computer_uuid> <encryption_password> <folder_uuid>\n", exeName);
fprintf(stderr, "\t%s [-l loglevel] listtree <target_nickname> <computer_uuid> <encryption_password> <folder_uuid>\n", exeName);
fprintf(stderr, "\t%s [-l loglevel] restore <target_nickname> <computer_uuid> <encryption_password> <folder_uuid>\n", exeName);
fprintf(stderr, "\t%s [-l loglevel] clearcache <target_nickname>\n", exeName);
Expand Down

0 comments on commit 857c185

Please sign in to comment.