mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-10-09 18:30:59 +00:00
Fixed: XCodeCapp reads the user's shell environment
Before this fix, XCodeCapp always ran under /bin/bash, causing problems when trying to source the files from other shells, like /bin/zsh This fix reads the shell information directly from the user's environment and XCC to run using that shell.
This commit is contained in:
1 parent
6284f29a96
commit
0f9a2dc9d3
2 files changed
+50
-14
No files matched your search
@@ -73,23 +73,59 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification
|
||||
|
||||
[self configure];
|
||||
|
||||
if([fm fileExistsAtPath:[@"~/.bash_profile" stringByExpandingTildeInPath]])
|
||||
profilePath = [@"source ~/.bash_profile" stringByExpandingTildeInPath];
|
||||
else if([fm fileExistsAtPath:[@"~/.profile" stringByExpandingTildeInPath]])
|
||||
profilePath = [@"source ~/.profile" stringByExpandingTildeInPath];
|
||||
else if([fm fileExistsAtPath:[@"~/.bashrc" stringByExpandingTildeInPath]])
|
||||
profilePath = [@"source ~/.bashrc" stringByExpandingTildeInPath];
|
||||
else if([fm fileExistsAtPath:[@"~/.zshrc" stringByExpandingTildeInPath]])
|
||||
profilePath = [@"source ~/.zshrc" stringByExpandingTildeInPath];
|
||||
NSString* myShell = [[[NSProcessInfo processInfo] environment] objectForKey:@"SHELL"];
|
||||
|
||||
if (myShell)
|
||||
{
|
||||
shellPath = myShell;
|
||||
}
|
||||
else
|
||||
{
|
||||
NSAlert *alert = [NSAlert alertWithMessageText:@"Cannot find any valid profile file."
|
||||
shellPath = @"/bin/bash";
|
||||
}
|
||||
|
||||
if([shellPath isEqualToString:@"/bin/bash"])
|
||||
{
|
||||
if([fm fileExistsAtPath:[@"~/.bash_profile" stringByExpandingTildeInPath]])
|
||||
{
|
||||
profilePath = [@"source ~/.bash_profile" stringByExpandingTildeInPath];
|
||||
}
|
||||
else if([fm fileExistsAtPath:[@"~/.bashrc" stringByExpandingTildeInPath]])
|
||||
{
|
||||
profilePath = [@"source ~/.bashrc" stringByExpandingTildeInPath];
|
||||
}
|
||||
else if([fm fileExistsAtPath:[@"~/.profile" stringByExpandingTildeInPath]])
|
||||
{
|
||||
profilePath = [@"source ~/.profile" stringByExpandingTildeInPath];
|
||||
}
|
||||
else
|
||||
{
|
||||
profilePath = @"";
|
||||
}
|
||||
|
||||
}
|
||||
else if ([shellPath isEqualToString:@"/bin/zsh"])
|
||||
if([fm fileExistsAtPath:[@"~/.zshrc" stringByExpandingTildeInPath]])
|
||||
{
|
||||
profilePath = [@"source ~/.zshrc" stringByExpandingTildeInPath];
|
||||
}
|
||||
else if([fm fileExistsAtPath:[@"~/.profile" stringByExpandingTildeInPath]])
|
||||
{
|
||||
profilePath = [@"source ~/.profile" stringByExpandingTildeInPath];
|
||||
}
|
||||
else
|
||||
{
|
||||
profilePath = @"";
|
||||
}
|
||||
else
|
||||
{
|
||||
NSAlert *alert = [NSAlert alertWithMessageText:@"Shell not recognized."
|
||||
defaultButton:@"OK"
|
||||
alternateButton:nil
|
||||
otherButton:nil
|
||||
informativeTextWithFormat:@"Neither ~/.bash_profile, ~/.profile, ~/.bashrc nor ~/.zshrc can be found.\n\nWithout this XcodeCapp cannot locate nib2cib.\n\nIf you notice any errors or strange behaviour, please look at the system log for messages and open a ticket."];
|
||||
informativeTextWithFormat:@"You are running %@ as your shell, which is not supported. Please change your shell to either BASH or ZSH.", shellPath];
|
||||
[alert runModal];
|
||||
profilePath = @"";
|
||||
profilePath = @"";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -415,8 +451,8 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification
|
||||
NSNumber *status;
|
||||
|
||||
task = [[NSTask alloc] init];
|
||||
|
||||
[task setLaunchPath: @"/bin/bash"];
|
||||
|
||||
[task setLaunchPath:shellPath];
|
||||
[task setArguments: arguments];
|
||||
[task setStandardOutput:[NSPipe pipe]];
|
||||
[task launch];
|
||||
|
||||
Reference in new issue
Block a user