mirror of
https://github.com/samsonjs/arq_restore.git
synced 2026-04-27 15:07:44 +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 *secretKey;
|
||||||
NSString *encryptionPassword;
|
NSString *encryptionPassword;
|
||||||
S3Service *s3;
|
S3Service *s3;
|
||||||
|
NSString *path;
|
||||||
}
|
}
|
||||||
- (BOOL)printArqFolders:(NSError **)error;
|
- (BOOL)readArgc:(int)argc argv:(const char **)argv;
|
||||||
- (BOOL)restorePath:(NSString *)path error:(NSError **)error;
|
- (BOOL)execute:(NSError **)error;
|
||||||
@end
|
@end
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,10 @@
|
||||||
#import "HTTP.h"
|
#import "HTTP.h"
|
||||||
#import "Restorer.h"
|
#import "Restorer.h"
|
||||||
|
|
||||||
|
|
||||||
@interface ArqRestoreCommand (internal)
|
@interface ArqRestoreCommand (internal)
|
||||||
|
- (BOOL)printArqFolders:(NSError **)error;
|
||||||
|
- (BOOL)restorePath:(NSError **)error;
|
||||||
- (BOOL)validateS3Keys:(NSError **)error;
|
- (BOOL)validateS3Keys:(NSError **)error;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
@ -72,8 +75,43 @@
|
||||||
[secretKey release];
|
[secretKey release];
|
||||||
[encryptionPassword release];
|
[encryptionPassword release];
|
||||||
[s3 release];
|
[s3 release];
|
||||||
|
[path release];
|
||||||
[super dealloc];
|
[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 {
|
- (BOOL)printArqFolders:(NSError **)error {
|
||||||
if (![self validateS3Keys:error]) {
|
if (![self validateS3Keys:error]) {
|
||||||
return NO;
|
return NO;
|
||||||
|
|
@ -118,7 +156,7 @@
|
||||||
}
|
}
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
- (BOOL)restorePath:(NSString *)path error:(NSError **)error {
|
- (BOOL)restorePath:(NSError **)error {
|
||||||
if (![self validateS3Keys:error]) {
|
if (![self validateS3Keys:error]) {
|
||||||
return NO;
|
return NO;
|
||||||
}
|
}
|
||||||
|
|
@ -153,9 +191,6 @@
|
||||||
printf("restored files are in %s\n", [bucketName fileSystemRepresentation]);
|
printf("restored files are in %s\n", [bucketName fileSystemRepresentation]);
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
@end
|
|
||||||
|
|
||||||
@implementation ArqRestoreCommand (internal)
|
|
||||||
- (BOOL)validateS3Keys:(NSError **)error {
|
- (BOOL)validateS3Keys:(NSError **)error {
|
||||||
if (accessKey == nil) {
|
if (accessKey == nil) {
|
||||||
SETNSERROR(@"ArqErrorDomain", -1, @"missing ARQ_ACCESS_KEY environment variable");
|
SETNSERROR(@"ArqErrorDomain", -1, @"missing ARQ_ACCESS_KEY environment variable");
|
||||||
|
|
|
||||||
|
|
@ -37,32 +37,25 @@
|
||||||
|
|
||||||
static void printUsage(const char *exeName) {
|
static void printUsage(const char *exeName) {
|
||||||
fprintf(stderr, "Usage:\n");
|
fprintf(stderr, "Usage:\n");
|
||||||
fprintf(stderr, "\t%s\n", exeName);
|
fprintf(stderr, "\t%s [-l log_level]\n", exeName);
|
||||||
fprintf(stderr, "\t%s /s3bucket/computerUUID/folderUUID\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);
|
setHSLogLevel(HSLOG_LEVEL_ERROR);
|
||||||
char *exePath = strdup(argv[0]);
|
char *exePath = strdup(argv[0]);
|
||||||
char *exeName = basename(exePath);
|
char *exeName = basename(exePath);
|
||||||
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
|
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
|
||||||
ArqRestoreCommand *cmd = [[[ArqRestoreCommand alloc] init] autorelease];
|
ArqRestoreCommand *cmd = [[[ArqRestoreCommand alloc] init] autorelease];
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
NSError *error = nil;
|
if (![cmd readArgc:argc argv:argv]) {
|
||||||
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 {
|
|
||||||
printUsage(exeName);
|
printUsage(exeName);
|
||||||
ret = 1;
|
ret = 1;
|
||||||
|
} else {
|
||||||
|
NSError *myError = nil;
|
||||||
|
if (![cmd execute:&myError]) {
|
||||||
|
NSLog(@"%@", [myError localizedDescription]);
|
||||||
|
ret = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
[pool drain];
|
[pool drain];
|
||||||
free(exePath);
|
free(exePath);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue