diff --git a/Tokaido/TKDApp.h b/Tokaido/TKDApp.h index baf3635..fb97014 100644 --- a/Tokaido/TKDApp.h +++ b/Tokaido/TKDApp.h @@ -59,6 +59,7 @@ typedef enum : NSUInteger { - (void)serializeToYAML; - (void)enterState:(TKDAppState)state; - (void)enterSubstate:(TKDAppSubstate)substate; +- (void)setStatus:(NSString *)status; - (void)runBundleInstall; diff --git a/Tokaido/TKDApp.m b/Tokaido/TKDApp.m index 047dc80..1b7482f 100644 --- a/Tokaido/TKDApp.m +++ b/Tokaido/TKDApp.m @@ -182,6 +182,11 @@ -(void)enterState:(TKDAppState)state; } } +-(void)setStatus:(NSString *)status; +{ + self.failureReason = status; +} + - (void)showInFinder; { [[NSWorkspace sharedWorkspace] openFile:self.appDirectoryPath]; diff --git a/Tokaido/TKDMuxrManager.m b/Tokaido/TKDMuxrManager.m index c669ab1..c277422 100644 --- a/Tokaido/TKDMuxrManager.m +++ b/Tokaido/TKDMuxrManager.m @@ -62,7 +62,7 @@ - (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)t if ([reply isEqualToString:@"ADDED"]) { NSLog(@"App added, waiting for ready..."); [self.socket readDataWithTimeout:-1 tag:0]; - } else if ([reply isEqualToString:@"READY"] || [reply isEqualToString:@"REMOVED"]) { + } else if ([reply isEqualToString:@"READY"] || [reply isEqualToString:@"REMOVED"] || [reply isEqualToString:@"ERR"]) { // This happens on a background thread, so it should fire off UI updating notifications on // the main thread. diff --git a/Tokaido/TKDTokaidoController.m b/Tokaido/TKDTokaidoController.m index bd6b0a8..778c9ce 100644 --- a/Tokaido/TKDTokaidoController.m +++ b/Tokaido/TKDTokaidoController.m @@ -153,10 +153,17 @@ - (void)handleMuxrEvent:(NSNotification *)note // Check the event here and do the right thing. NSString *action = [[note userInfo] objectForKey:@"action"]; + + NSLog(@"ACTION: %@", action); + + if ([action isEqualToString:@"ERR"]) { + [app setStatus:@"Booting failed. Review the logs or \"Open in Terminal\"."]; + } + if ([action isEqualToString:@"READY"]) { NSLog(@"Enabling App: %@", hostname); [app enterState:TKDAppOn]; - } else if ([action isEqualToString:@"FAILED"] || [action isEqualToString:@"REMOVED"]) { + } else if ([action isEqualToString:@"FAILED"] || [action isEqualToString:@"REMOVED"] || [action isEqualToString:@"ERR"]) { NSLog(@"Disabling App: %@", hostname); [app enterState:TKDAppOff]; }