Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
chriswayoub committed Oct 10, 2015
2 parents 095c0ae + fc99e76 commit bed88ee
Show file tree
Hide file tree
Showing 20 changed files with 513 additions and 117 deletions.
19 changes: 18 additions & 1 deletion Vagrant Manager.xcodeproj/project.pbxproj
Expand Up @@ -7,6 +7,9 @@
objects = {

/* Begin PBXBuildFile section */
2609ECF51BC89CEA00E4B44E /* NFSScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = 2609ECF41BC89CEA00E4B44E /* NFSScanner.m */; settings = {ASSET_TAGS = (); }; };
2609ECF71BC8A04600E4B44E /* rdp@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 2609ECF61BC8A04600E4B44E /* rdp@2x.png */; settings = {ASSET_TAGS = (); }; };
2609ECF91BC8A05100E4B44E /* rdp.png in Resources */ = {isa = PBXBuildFile; fileRef = 2609ECF81BC8A05100E4B44E /* rdp.png */; settings = {ASSET_TAGS = (); }; };
26130E9A1B1D565200872C4F /* bm_status_icon_off.png in Resources */ = {isa = PBXBuildFile; fileRef = 26130E981B1D565200872C4F /* bm_status_icon_off.png */; };
26130E9B1B1D565200872C4F /* bm_status_icon_off@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 26130E991B1D565200872C4F /* bm_status_icon_off@2x.png */; };
26130E9E1B1D596400872C4F /* bm_status_icon_suspended@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 26130E9C1B1D596400872C4F /* bm_status_icon_suspended@2x.png */; };
Expand Down Expand Up @@ -147,6 +150,10 @@
/* End PBXCopyFilesBuildPhase section */

/* Begin PBXFileReference section */
2609ECF31BC89CEA00E4B44E /* NFSScanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NFSScanner.h; sourceTree = "<group>"; };
2609ECF41BC89CEA00E4B44E /* NFSScanner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NFSScanner.m; sourceTree = "<group>"; };
2609ECF61BC8A04600E4B44E /* rdp@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "rdp@2x.png"; sourceTree = "<group>"; };
2609ECF81BC8A05100E4B44E /* rdp.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = rdp.png; sourceTree = "<group>"; };
26130E981B1D565200872C4F /* bm_status_icon_off.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bm_status_icon_off.png; sourceTree = "<group>"; };
26130E991B1D565200872C4F /* bm_status_icon_off@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bm_status_icon_off@2x.png"; sourceTree = "<group>"; };
26130E9C1B1D596400872C4F /* bm_status_icon_suspended@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bm_status_icon_suspended@2x.png"; sourceTree = "<group>"; };
Expand Down Expand Up @@ -399,6 +406,8 @@
83C4CDAA1A0605B700611DCC /* Vagrant Action Icons */ = {
isa = PBXGroup;
children = (
2609ECF81BC8A05100E4B44E /* rdp.png */,
2609ECF61BC8A04600E4B44E /* rdp@2x.png */,
83C4CDF31A060DCB00611DCC /* ssh.png */,
83C4CDEF1A060D4600611DCC /* ssh@2x.png */,
83C4CDCF1A060B3600611DCC /* up@2x.png */,
Expand All @@ -422,6 +431,8 @@
83F5BBB31983B8F200ACE853 /* Core */ = {
isa = PBXGroup;
children = (
2609ECF31BC89CEA00E4B44E /* NFSScanner.h */,
2609ECF41BC89CEA00E4B44E /* NFSScanner.m */,
837A308B1A5D170D00E12A40 /* Custom Commands */,
83F5BBB41983B8FB00ACE853 /* Vagrant Manager */,
83F5BBB51983B90800ACE853 /* Providers */,
Expand Down Expand Up @@ -658,7 +669,7 @@
B1357A65187CEB3B00811CBC /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0610;
LastUpgradeCheck = 0700;
ORGANIZATIONNAME = Lanayo;
};
buildConfigurationList = B1357A68187CEB3B00811CBC /* Build configuration list for PBXProject "Vagrant Manager" */;
Expand Down Expand Up @@ -689,6 +700,7 @@
83C4CE081A0628AC00611DCC /* vagrant_logo_refresh_3-clean@2x.png in Resources */,
83C4CDE51A060B3600611DCC /* provision@2x.png in Resources */,
838A3736191F5AAB006244FA /* Askpass in Resources */,
2609ECF71BC8A04600E4B44E /* rdp@2x.png in Resources */,
83EAC43C18D067C900FF26A1 /* vagrant_logo_on-clean.png in Resources */,
83C4CDE91A060B3600611DCC /* destroy@2x.png in Resources */,
83C4CE161A062BCF00611DCC /* vagrant_logo_refresh_2-clean.png in Resources */,
Expand All @@ -708,6 +720,7 @@
B150013419249FFD000A76E7 /* status_icon_on@2x.png in Resources */,
8339DCA2187E756B0036E162 /* TaskOutputWindow.xib in Resources */,
83C4CDE41A060B3600611DCC /* reload.png in Resources */,
2609ECF91BC8A05100E4B44E /* rdp.png in Resources */,
B17AA1901887CA4600B4C274 /* PreferencesWindow.xib in Resources */,
B150012E19249CA2000A76E7 /* vagrant_logo_on-flat@2x.png in Resources */,
83C4CDDE1A060B3600611DCC /* up.png in Resources */,
Expand Down Expand Up @@ -799,6 +812,7 @@
B17AA18F1887CA4600B4C274 /* PreferencesWindow.m in Sources */,
837A30891A5D0D5500E12A40 /* ManageCustomCommandsWindow.m in Sources */,
83FD353D19826945002EEA2D /* ManageBookmarksWindow.m in Sources */,
2609ECF51BC89CEA00E4B44E /* NFSScanner.m in Sources */,
83F1696F1923789900C54F13 /* VersionComparison.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
Expand Down Expand Up @@ -877,6 +891,7 @@
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
Expand Down Expand Up @@ -941,6 +956,7 @@
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "Vagrant Manager/Vagrant Manager-Prefix.pch";
INFOPLIST_FILE = "Vagrant Manager/Vagrant Manager-Info.plist";
PRODUCT_BUNDLE_IDENTIFIER = "lanayo.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app;
};
Expand All @@ -958,6 +974,7 @@
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "Vagrant Manager/Vagrant Manager-Prefix.pch";
INFOPLIST_FILE = "Vagrant Manager/Vagrant Manager-Info.plist";
PRODUCT_BUNDLE_IDENTIFIER = "lanayo.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app;
};
Expand Down
6 changes: 5 additions & 1 deletion Vagrant Manager/AboutWindow.h
Expand Up @@ -9,7 +9,11 @@
#import <WebKit/WebKit.h>
#import "BaseWindowController.h"

@interface AboutWindow : BaseWindowController <WebPolicyDecisionListener>
@interface AboutWindow : BaseWindowController <WebPolicyDecisionListener
#if __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_11
, WebPolicyDelegate, WebFrameLoadDelegate, WebUIDelegate
#endif
>

@property (weak) IBOutlet WebView *webView;

Expand Down
35 changes: 35 additions & 0 deletions Vagrant Manager/AppDelegate.m
Expand Up @@ -232,6 +232,14 @@ - (void)openInstanceInTerminal:(VagrantInstance *)instance {
}
}

- (void)editVagrantfile:(VagrantInstance *)instance {
//open Vagrantfile in default text editor
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/bin/bash"];
[task setArguments:@[@"-l", @"-c", [NSString stringWithFormat:@"open -t %@", [Util escapeShellArg:[instance getVagrantfilePath]]]]];
[task launch];
}

- (void)addBookmarkWithInstance:(VagrantInstance *)instance {
[[BookmarkManager sharedManager] addBookmarkWithPath:instance.path displayName:instance.displayName providerIdentifier:instance.providerIdentifier];
[[BookmarkManager sharedManager] saveBookmarks];
Expand Down Expand Up @@ -307,7 +315,20 @@ - (void)checkForVagrantUpdates:(BOOL)showAlert {
}
});
});
}

- (void)editHostsFile {
NSString *terminalEditorName = [[NSUserDefaults standardUserDefaults] valueForKey:@"terminalEditorPreference"];

NSString *terminalEditor;
if([terminalEditorName isEqualToString:@"vim"]) {
terminalEditor = @"vim";
} else {
terminalEditor = @"nano";
}

NSString *taskCommand = [NSString stringWithFormat:@"sudo %@ /etc/hosts", [Util escapeShellArg:terminalEditor]];
[self runTerminalCommand:taskCommand];
}

#pragma mark - Vagrant Machine control
Expand Down Expand Up @@ -340,6 +361,11 @@ - (void)runVagrantAction:(NSString*)action withMachine:(VagrantMachine*)machine
if(machine.instance.providerIdentifier) {
[commandParts addObject:[NSString stringWithFormat:@"--provider=%@", machine.instance.providerIdentifier]];
}
} else if([action isEqualToString:@"up-provision"]) {
[commandParts addObject:@"vagrant up --provision"];
if(machine.instance.providerIdentifier) {
[commandParts addObject:[NSString stringWithFormat:@"--provider=%@", machine.instance.providerIdentifier]];
}
} else if([action isEqualToString:@"reload"]) {
[commandParts addObject:@"vagrant reload"];
} else if([action isEqualToString:@"suspend"]) {
Expand All @@ -350,6 +376,8 @@ - (void)runVagrantAction:(NSString*)action withMachine:(VagrantMachine*)machine
[commandParts addObject:@"vagrant provision"];
} else if([action isEqualToString:@"destroy"]) {
[commandParts addObject:@"vagrant destroy -f"];
} else if([action isEqualToString:@"rdp"]) {
[commandParts addObject:@"vagrant rdp"];
} else {
return;
}
Expand Down Expand Up @@ -385,6 +413,11 @@ - (void)runVagrantAction:(NSString*)action withInstance:(VagrantInstance*)instan
if(instance.providerIdentifier) {
[commandParts addObject:[NSString stringWithFormat:@"--provider=%@", instance.providerIdentifier]];
}
} else if([action isEqualToString:@"up-provision"]) {
[commandParts addObject:@"vagrant up --provision"];
if(instance.providerIdentifier) {
[commandParts addObject:[NSString stringWithFormat:@"--provider=%@", instance.providerIdentifier]];
}
} else if([action isEqualToString:@"reload"]) {
[commandParts addObject:@"vagrant reload"];
} else if([action isEqualToString:@"suspend"]) {
Expand All @@ -395,6 +428,8 @@ - (void)runVagrantAction:(NSString*)action withInstance:(VagrantInstance*)instan
[commandParts addObject:@"vagrant provision"];
} else if([action isEqualToString:@"destroy"]) {
[commandParts addObject:@"vagrant destroy -f"];
} else if([action isEqualToString:@"rdp"]) {
[commandParts addObject:@"vagrant rdp"];
} else {
return;
}
Expand Down
2 changes: 2 additions & 0 deletions Vagrant Manager/MenuDelegate.h
Expand Up @@ -17,8 +17,10 @@
- (void)performCustomCommand:(CustomCommand*)customCommand withMachine:(VagrantMachine*)machine;
- (void)openInstanceInFinder:(VagrantInstance*)instance;
- (void)openInstanceInTerminal:(VagrantInstance*)instance;
- (void)editVagrantfile:(VagrantInstance*)instance;
- (void)addBookmarkWithInstance:(VagrantInstance*)instance;
- (void)removeBookmarkWithInstance:(VagrantInstance*)instance;
- (void)checkForVagrantUpdates:(BOOL)showAlert;
- (void)editHostsFile;

@end
14 changes: 14 additions & 0 deletions Vagrant Manager/NFSScanner.h
@@ -0,0 +1,14 @@
//
// NfsScanner.h
// Vagrant Manager
//
// Copyright (c) 2014 Lanayo. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface NFSScanner : NSObject

- (NSArray*)getNFSInstancePaths;

@end
49 changes: 49 additions & 0 deletions Vagrant Manager/NFSScanner.m
@@ -0,0 +1,49 @@
//
// NfsScanner.m
// Vagrant Manager
//
// Copyright (c) 2014 Lanayo. All rights reserved.
//

#import "NFSScanner.h"

@implementation NFSScanner

//find vagrant instances in the NFS exports file
- (NSArray*)getNFSInstancePaths {
NSMutableArray *paths = [[NSMutableArray alloc] init];

//get contents of /etc/exports
NSError *err;
NSString *fileContents = [NSString stringWithContentsOfFile:@"/etc/exports" encoding:NSUTF8StringEncoding error:&err];

if(fileContents) {
//search for vagrant NFS paths
NSMutableArray *lines = [[fileContents componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]] mutableCopy];
[lines removeObject:@""];

for(NSString *line in lines) {

if([line rangeOfString:@"# VAGRANT-"].location != NSNotFound) {
continue;
}

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(?<!\\\\)\"((?:\\\\\"|[^\"])*+)\"" options:0 error:nil];
NSArray *pathArr = [regex matchesInString:line options:0 range:NSMakeRange(0, [line length])];
for (NSTextCheckingResult *pathResult in pathArr) {
if (pathResult.range.length > 1) {
NSString *path = [line substringWithRange:[pathResult rangeAtIndex:1]];
BOOL vagrantFileExists = [[NSFileManager defaultManager] fileExistsAtPath:[NSString pathWithComponents:@[path, @"Vagrantfile"]]];

if(vagrantFileExists) {
[paths addObject:path];
}
}
}
}
}

return [NSArray arrayWithArray:paths];
}

@end
43 changes: 39 additions & 4 deletions Vagrant Manager/NativeMenu.m
Expand Up @@ -113,6 +113,17 @@ - (id)init {

[_menu addItem:[NSMenuItem separatorItem]];

NSMenuItem *extrasMenuItem = [[NSMenuItem alloc] initWithTitle:@"Extras" action:nil keyEquivalent:@""];
[_menu addItem:extrasMenuItem];

NSMenu *extrasMenu = [[NSMenu alloc] init];

NSMenuItem *editHostsMenuItem = [[NSMenuItem alloc] initWithTitle:@"Edit hosts file" action:@selector(editHostsMenuItemClicked:) keyEquivalent:@""];
editHostsMenuItem.target = self;
[extrasMenu addItem:editHostsMenuItem];

[extrasMenuItem setSubmenu:extrasMenu];

NSMenuItem *preferencesMenuItem = [[NSMenuItem alloc] initWithTitle:@"Preferences" action:@selector(preferencesMenuItemClicked:) keyEquivalent:@""];
preferencesMenuItem.target = self;
[_menu addItem:preferencesMenuItem];
Expand Down Expand Up @@ -280,8 +291,12 @@ - (void)updateRefreshIcon:(id)sender {

#pragma mark - Native menu item delegate

- (void)nativeMenuItemUpAllMachines:(NativeMenuItem *)menuItem {
[self performAction:@"up" withInstance:menuItem.instance];
- (void)nativeMenuItemUpAllMachines:(NativeMenuItem *)menuItem withProvision:(BOOL)provision {
if(provision) {
[self performAction:@"up-provision" withInstance:menuItem.instance];
} else {
[self performAction:@"up" withInstance:menuItem.instance];
}
}

- (void)nativeMenuItemHaltAllMachines:(NativeMenuItem *)menuItem {
Expand All @@ -292,6 +307,10 @@ - (void)nativeMenuItemSSHInstance:(NativeMenuItem*)menuItem {
[self performAction:@"ssh" withInstance:menuItem.instance];
}

- (void)nativeMenuItemRDPInstance:(NativeMenuItem*)menuItem {
[self performAction:@"rdp" withInstance:menuItem.instance];
}

- (void)nativeMenuItemReloadAllMachines:(NativeMenuItem*)menuItem {
[self performAction:@"reload" withInstance:menuItem.instance];
}
Expand Down Expand Up @@ -325,6 +344,10 @@ - (void)nativeMenuItemOpenTerminal:(NativeMenuItem*)menuItem {
[self.delegate openInstanceInTerminal:menuItem.instance];
}

- (void)nativeMenuItemEditVagrantfile:(NativeMenuItem *)menuItem {
[self.delegate editVagrantfile:menuItem.instance];
}

- (void)nativeMenuItemUpdateProviderIdentifier:(NativeMenuItem*)menuItem withProviderIdentifier:(NSString*)providerIdentifier {
VagrantInstance *instance = menuItem.instance;

Expand All @@ -347,8 +370,12 @@ - (void)nativeMenuItemAddBookmark:(NativeMenuItem*)menuItem {
[self.delegate addBookmarkWithInstance:menuItem.instance];
}

- (void)nativeMenuItemUpMachine:(VagrantMachine *)machine {
[self performAction:@"up" withMachine:machine];
- (void)nativeMenuItemUpMachine:(VagrantMachine *)machine withProvision:(BOOL)provision {
if(provision) {
[self performAction:@"up-provision" withMachine:machine];
} else {
[self performAction:@"up" withMachine:machine];
}
}

- (void)nativeMenuItemHaltMachine:(VagrantMachine *)machine {
Expand All @@ -359,6 +386,10 @@ - (void)nativeMenuItemSSHMachine:(VagrantMachine*)machine {
[self performAction:@"ssh" withMachine:machine];
}

- (void)nativeMenuItemRDPMachine:(VagrantMachine*)machine {
[self performAction:@"rdp" withMachine:machine];
}

- (void)nativeMenuItemReloadMachine:(VagrantMachine *)machine {
[self performAction:@"reload" withMachine:machine];
}
Expand Down Expand Up @@ -414,6 +445,10 @@ - (void)manageCustomCommandsMenuItemClicked:(id)sender {
}
}

- (void)editHostsMenuItemClicked:(id)sender {
[self.delegate editHostsFile];
}

- (void)preferencesMenuItemClicked:(id)sender {
if(preferencesWindow && !preferencesWindow.isClosed) {
[NSApp activateIgnoringOtherApps:YES];
Expand Down
7 changes: 5 additions & 2 deletions Vagrant Manager/NativeMenuItem.h
Expand Up @@ -13,8 +13,9 @@

@protocol NativeMenuItemDelegate

- (void)nativeMenuItemUpAllMachines:(NativeMenuItem*)menuItem;
- (void)nativeMenuItemUpAllMachines:(NativeMenuItem*)menuItem withProvision:(BOOL)provision;
- (void)nativeMenuItemSSHInstance:(NativeMenuItem*)menuItem;
- (void)nativeMenuItemRDPInstance:(NativeMenuItem*)menuItem;
- (void)nativeMenuItemSuspendAllMachines:(NativeMenuItem*)menuItem;
- (void)nativeMenuItemReloadAllMachines:(NativeMenuItem*)menuItem;
- (void)nativeMenuItemHaltAllMachines:(NativeMenuItem*)menuItem;
Expand All @@ -23,12 +24,14 @@
- (void)nativeMenuItemCustomCommandAllMachines:(NativeMenuItem*)menuItem withCommand:(CustomCommand*)customCommand;
- (void)nativeMenuItemOpenFinder:(NativeMenuItem*)menuItem;
- (void)nativeMenuItemOpenTerminal:(NativeMenuItem*)menuItem;
- (void)nativeMenuItemEditVagrantfile:(NativeMenuItem*)menuItem;
- (void)nativeMenuItemUpdateProviderIdentifier:(NativeMenuItem*)menuItem withProviderIdentifier:(NSString*)providerIdentifier;
- (void)nativeMenuItemRemoveBookmark:(NativeMenuItem*)menuItem;
- (void)nativeMenuItemAddBookmark:(NativeMenuItem*)menuItem;

- (void)nativeMenuItemUpMachine:(VagrantMachine*)machine;
- (void)nativeMenuItemUpMachine:(VagrantMachine*)machine withProvision:(BOOL)provision;
- (void)nativeMenuItemSSHMachine:(VagrantMachine*)machine;
- (void)nativeMenuItemRDPMachine:(VagrantMachine*)machine;
- (void)nativeMenuItemSuspendMachine:(VagrantMachine*)machine;
- (void)nativeMenuItemReloadMachine:(VagrantMachine*)machine;
- (void)nativeMenuItemHaltMachine:(VagrantMachine*)machine;
Expand Down

0 comments on commit bed88ee

Please sign in to comment.