From 6c5c3a856b5b94d33d0c2155c87a818a554cc53d Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 6 Jan 2016 11:57:39 -0800 Subject: [PATCH] fix for search paths for distributed server-console --- console/package.json | 4 +-- console/src/main.js | 9 +++--- console/src/modules/path-finder.js | 44 ++++++++++++++++++++++++------ 3 files changed, 41 insertions(+), 16 deletions(-) diff --git a/console/package.json b/console/package.json index 32cbfb58eb..a2c59703ea 100644 --- a/console/package.json +++ b/console/package.json @@ -18,8 +18,8 @@ }, "main": "src/main.js", "scripts": { - "start": "electron . --local-debug-builds --debug", - "local-release": "electron . --local-release-builds --debug", + "start": "electron . --binary-type local-debug --debug", + "local-release": "electron . --binary-type local-release --debug", "packager": "node packager.js" }, "dependencies": { diff --git a/console/src/main.js b/console/src/main.js index 35cedb66ee..7a94062090 100644 --- a/console/src/main.js +++ b/console/src/main.js @@ -128,12 +128,11 @@ var acPath = null; var debug = argv.debug; +var binaryType = argv.binaryType; -if (argv.localDebugBuilds || argv.localReleaseBuilds) { - interfacePath = pathFinder.discoveredPath("Interface", argv.localReleaseBuilds); - dsPath = pathFinder.discoveredPath("domain-server", argv.localReleaseBuilds); - acPath = pathFinder.discoveredPath("assignment-client", argv.localReleaseBuilds); -} +interfacePath = pathFinder.discoveredPath("Interface", binaryType); +dsPath = pathFinder.discoveredPath("domain-server", binaryType); +acPath = pathFinder.discoveredPath("assignment-client", binaryType); function binaryMissingMessage(displayName, executableName, required) { var message = "The " + displayName + " executable was not found.\n"; diff --git a/console/src/modules/path-finder.js b/console/src/modules/path-finder.js index 690389f5f2..c26f3b445f 100644 --- a/console/src/modules/path-finder.js +++ b/console/src/modules/path-finder.js @@ -1,6 +1,6 @@ var fs = require('fs'); -exports.searchPaths = function(name, preferRelease) { +exports.searchPaths = function(name, binaryType) { function platformExtension(name) { if (name == "Interface") { if (process.platform == "darwin") { @@ -16,15 +16,41 @@ exports.searchPaths = function(name, preferRelease) { } var extension = platformExtension(name); - var basePath = "../build/" + name + "/"; + var devBasePath = "../build/" + name + "/"; - return [ - basePath + name + extension, - basePath + (preferRelease ? "Release/" : "Debug/") + name + extension - ]; + var paths = []; + + if (binaryType == "local-release" || binaryType == "local-debug") { + // check in the developer build tree for binaries + paths = [ + devBasePath + name + extension, + devBasePath + (binaryType == "local-release" ? "Release/" : "Debug/") + name + extension + ] + } else { + // check directly beside the binary + paths = [ + __dirname + "/" + name + extension, + ]; + + // check if we're inside an app bundle on OS X + if (process.platform == "darwin") { + var contentPath = ".app/Contents/"; + var contentEndIndex = __dirname.indexOf(contentPath); + + if (contentEndIndex != -1) { + // this is an app bundle, check in Contents/MacOS for the binaries + var appPath = __dirname.substring(0, contentEndIndex); + appPath += ".app/Contents/MacOS/"; + + paths.push(appPath + name + extension); + } + } + } + + return paths; } -exports.discoveredPath = function (name, preferRelease) { +exports.discoveredPath = function (name, binaryType) { function binaryFromPaths(name, paths) { for (var i = 0; i < paths.length; i++) { var path = paths[i]; @@ -37,7 +63,7 @@ exports.discoveredPath = function (name, preferRelease) { return path; } } catch (e) { - console.warn("Executable with name " + name + " not found at path " + path); + console.log("Executable with name " + name + " not found at path " + path); } } @@ -45,5 +71,5 @@ exports.discoveredPath = function (name, preferRelease) { } // attempt to find a binary at the usual paths, return null if it doesn't exist - return binaryFromPaths(name, this.searchPaths(name, preferRelease)); + return binaryFromPaths(name, this.searchPaths(name, binaryType)); }