mirror of
https://github.com/samsonjs/arq_restore.git
synced 2026-03-25 09:25:53 +00:00
added -l log_level argument to arq_restore
This commit is contained in:
parent
3c02cd09fb
commit
9e2d899d8e
3 changed files with 53 additions and 24 deletions
|
|
@ -38,7 +38,8 @@
|
|||
NSString *secretKey;
|
||||
NSString *encryptionPassword;
|
||||
S3Service *s3;
|
||||
NSString *path;
|
||||
}
|
||||
- (BOOL)printArqFolders:(NSError **)error;
|
||||
- (BOOL)restorePath:(NSString *)path error:(NSError **)error;
|
||||
- (BOOL)readArgc:(int)argc argv:(const char **)argv;
|
||||
- (BOOL)execute:(NSError **)error;
|
||||
@end
|
||||
|
|
|
|||
|
|
@ -40,7 +40,10 @@
|
|||
#import "HTTP.h"
|
||||
#import "Restorer.h"
|
||||
|
||||
|
||||
@interface ArqRestoreCommand (internal)
|
||||
- (BOOL)printArqFolders:(NSError **)error;
|
||||
- (BOOL)restorePath:(NSError **)error;
|
||||
- (BOOL)validateS3Keys:(NSError **)error;
|
||||
@end
|
||||
|
||||
|
|
@ -72,13 +75,48 @@
|
|||
[secretKey release];
|
||||
[encryptionPassword release];
|
||||
[s3 release];
|
||||
[path release];
|
||||
[super dealloc];
|
||||
}
|
||||
- (BOOL)readArgc:(int)argc argv:(const char **)argv {
|
||||
for (int i = 1; i < argc; i++) {
|
||||
if (*argv[i] == '-') {
|
||||
if (strcmp(argv[i], "-l")) {
|
||||
fprintf(stderr, "invalid argument\n");
|
||||
return NO;
|
||||
}
|
||||
if (argc <= i+1) {
|
||||
fprintf(stderr, "missing log_level argument (error,warn,info,debug or trace)\n");
|
||||
return NO;
|
||||
}
|
||||
i++;
|
||||
NSString *level = [NSString stringWithUTF8String:argv[i]];
|
||||
setHSLogLevel(hsLogLevelForName(level));
|
||||
} else if (path == nil) {
|
||||
path = [[NSString alloc] initWithUTF8String:argv[i]];
|
||||
} else {
|
||||
fprintf(stderr, "warning: ignoring argument '%s'\n", argv[i]);
|
||||
}
|
||||
}
|
||||
return YES;
|
||||
}
|
||||
- (BOOL)execute:(NSError **)error {
|
||||
BOOL ret = YES;
|
||||
if (path == nil) {
|
||||
ret = [self printArqFolders:error];
|
||||
} else {
|
||||
ret = [self restorePath:error];
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation ArqRestoreCommand (internal)
|
||||
- (BOOL)printArqFolders:(NSError **)error {
|
||||
if (![self validateS3Keys:error]) {
|
||||
return NO;
|
||||
}
|
||||
NSArray *s3BucketNames = [S3Service s3BucketNamesForAccessKeyID:accessKey];
|
||||
NSArray *s3BucketNames = [S3Service s3BucketNamesForAccessKeyID:accessKey];
|
||||
NSMutableArray *computerUUIDPaths = [NSMutableArray array];
|
||||
for (NSString *s3BucketName in s3BucketNames) {
|
||||
NSString *computerUUIDPrefix = [NSString stringWithFormat:@"/%@/", s3BucketName];
|
||||
|
|
@ -118,7 +156,7 @@
|
|||
}
|
||||
return YES;
|
||||
}
|
||||
- (BOOL)restorePath:(NSString *)path error:(NSError **)error {
|
||||
- (BOOL)restorePath:(NSError **)error {
|
||||
if (![self validateS3Keys:error]) {
|
||||
return NO;
|
||||
}
|
||||
|
|
@ -153,9 +191,6 @@
|
|||
printf("restored files are in %s\n", [bucketName fileSystemRepresentation]);
|
||||
return YES;
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation ArqRestoreCommand (internal)
|
||||
- (BOOL)validateS3Keys:(NSError **)error {
|
||||
if (accessKey == nil) {
|
||||
SETNSERROR(@"ArqErrorDomain", -1, @"missing ARQ_ACCESS_KEY environment variable");
|
||||
|
|
|
|||
|
|
@ -37,32 +37,25 @@
|
|||
|
||||
static void printUsage(const char *exeName) {
|
||||
fprintf(stderr, "Usage:\n");
|
||||
fprintf(stderr, "\t%s\n", exeName);
|
||||
fprintf(stderr, "\t%s /s3bucket/computerUUID/folderUUID\n", exeName);
|
||||
fprintf(stderr, "\t%s [-l log_level]\n", exeName);
|
||||
fprintf(stderr, "\t%s [-l log_level] /s3bucket/computerUUID/folderUUID\n", exeName);
|
||||
}
|
||||
int main (int argc, const char * argv[]) {
|
||||
int main (int argc, const char **argv) {
|
||||
setHSLogLevel(HSLOG_LEVEL_ERROR);
|
||||
char *exePath = strdup(argv[0]);
|
||||
char *exeName = basename(exePath);
|
||||
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
|
||||
ArqRestoreCommand *cmd = [[[ArqRestoreCommand alloc] init] autorelease];
|
||||
int ret = 0;
|
||||
NSError *error = nil;
|
||||
if (argc == 1) {
|
||||
if (![cmd printArqFolders:&error]) {
|
||||
NSLog(@"%@", [error localizedDescription]);
|
||||
ret = 1;
|
||||
} else {
|
||||
printf("\nType %s <s3 path> to restore\n", exeName);
|
||||
}
|
||||
} else if (argc == 2) {
|
||||
if (![cmd restorePath:[NSString stringWithUTF8String:argv[1]] error:&error]) {
|
||||
NSLog(@"%@", [error localizedDescription]);
|
||||
ret = 1;
|
||||
}
|
||||
} else {
|
||||
if (![cmd readArgc:argc argv:argv]) {
|
||||
printUsage(exeName);
|
||||
ret = 1;
|
||||
} else {
|
||||
NSError *myError = nil;
|
||||
if (![cmd execute:&myError]) {
|
||||
NSLog(@"%@", [myError localizedDescription]);
|
||||
ret = 1;
|
||||
}
|
||||
}
|
||||
[pool drain];
|
||||
free(exePath);
|
||||
|
|
|
|||
Loading…
Reference in a new issue