From 5d5d83d474669a8613cab837927e804ba7e4ebce Mon Sep 17 00:00:00 2001 From: Dave Rael Date: Tue, 20 Oct 2015 07:34:18 -0600 Subject: [PATCH 01/14] Remove duplication of locating Atom Home --- src/browser/atom-application.coffee | 31 +++++++++++++++-------------- src/browser/atom-window.coffee | 2 +- src/browser/main.coffee | 8 ++++---- static/index.js | 22 ++++---------------- 4 files changed, 25 insertions(+), 38 deletions(-) diff --git a/src/browser/atom-application.coffee b/src/browser/atom-application.coffee index b68ee2c73..6ca7a2133 100644 --- a/src/browser/atom-application.coffee +++ b/src/browser/atom-application.coffee @@ -65,7 +65,7 @@ class AtomApplication exit: (status) -> app.exit(status) constructor: (options) -> - {@resourcePath, @devResourcePath, @version, @devMode, @safeMode, @socketPath, timeout} = options + {@resourcePath, @devResourcePath, @version, @devMode, @safeMode, @socketPath, timeout, @atomHome} = options @socketPath = null if options.test @@ -89,16 +89,16 @@ class AtomApplication else @loadState(options) or @openPath(options) - openWithOptions: ({pathsToOpen, executedFrom, urlsToOpen, test, pidToKillWhenClosed, devMode, safeMode, newWindow, logFile, profileStartup, timeout}) -> + openWithOptions: ({pathsToOpen, executedFrom, urlsToOpen, test, pidToKillWhenClosed, devMode, safeMode, atomHome, newWindow, logFile, profileStartup, timeout}) -> if test - @runTests({headless: true, devMode, @resourcePath, executedFrom, pathsToOpen, logFile, timeout}) + @runTests({headless: true, devMode, @resourcePath, executedFrom, pathsToOpen, logFile, timeout, atomHome}) else if pathsToOpen.length > 0 - @openPaths({pathsToOpen, executedFrom, pidToKillWhenClosed, newWindow, devMode, safeMode, profileStartup}) + @openPaths({pathsToOpen, executedFrom, pidToKillWhenClosed, newWindow, devMode, safeMode, atomHome, profileStartup}) else if urlsToOpen.length > 0 - @openUrl({urlToOpen, devMode, safeMode}) for urlToOpen in urlsToOpen + @openUrl({urlToOpen, devMode, safeMode, atomHome}) for urlToOpen in urlsToOpen else # Always open a editor window if this is the first instance of Atom. - @openPath({pidToKillWhenClosed, newWindow, devMode, safeMode, profileStartup}) + @openPath({pidToKillWhenClosed, newWindow, devMode, safeMode, atomHome, profileStartup}) # Public: Removes the {AtomWindow} from the global window list. removeWindow: (window) -> @@ -164,6 +164,7 @@ class AtomApplication getLoadSettings = => devMode: @focusedWindow()?.devMode safeMode: @focusedWindow()?.safeMode + atomHome: @focusedWindow()?.atomHome @on 'application:quit', -> app.quit() @on 'application:new-window', -> @openPath(_.extend(windowDimensions: @focusedWindow()?.getDimensions(), getLoadSettings())) @@ -359,8 +360,8 @@ class AtomApplication # :safeMode - Boolean to control the opened window's safe mode. # :profileStartup - Boolean to control creating a profile of the startup time. # :window - {AtomWindow} to open file paths in. - openPath: ({pathToOpen, pidToKillWhenClosed, newWindow, devMode, safeMode, profileStartup, window}) -> - @openPaths({pathsToOpen: [pathToOpen], pidToKillWhenClosed, newWindow, devMode, safeMode, profileStartup, window}) + openPath: ({pathToOpen, pidToKillWhenClosed, newWindow, devMode, safeMode, atomHome, profileStartup, window}) -> + @openPaths({pathsToOpen: [pathToOpen], pidToKillWhenClosed, newWindow, devMode, safeMode, atomHome, profileStartup, window}) # Public: Opens multiple paths, in existing windows if possible. # @@ -372,7 +373,7 @@ class AtomApplication # :safeMode - Boolean to control the opened window's safe mode. # :windowDimensions - Object with height and width keys. # :window - {AtomWindow} to open file paths in. - openPaths: ({pathsToOpen, executedFrom, pidToKillWhenClosed, newWindow, devMode, safeMode, windowDimensions, profileStartup, window}={}) -> + openPaths: ({pathsToOpen, executedFrom, pidToKillWhenClosed, newWindow, devMode, safeMode, atomHome, windowDimensions, profileStartup, window}={}) -> locationsToOpen = (@locationForPathToOpen(pathToOpen, executedFrom) for pathToOpen in pathsToOpen) pathsToOpen = (locationToOpen.pathToOpen for locationToOpen in locationsToOpen) @@ -404,7 +405,7 @@ class AtomApplication windowInitializationScript ?= require.resolve('../initialize-application-window') resourcePath ?= @resourcePath - openedWindow = new AtomWindow({locationsToOpen, windowInitializationScript, resourcePath, devMode, safeMode, windowDimensions, profileStartup}) + openedWindow = new AtomWindow({locationsToOpen, windowInitializationScript, resourcePath, devMode, safeMode, atomHome, windowDimensions, profileStartup}) if pidToKillWhenClosed? @pidsToOpenWindows[pidToKillWhenClosed] = openedWindow @@ -481,7 +482,7 @@ class AtomApplication packagePath = @packages.resolvePackagePath(packageName) windowInitializationScript = path.resolve(packagePath, pack.urlMain) windowDimensions = @focusedWindow()?.getDimensions() - new AtomWindow({windowInitializationScript, @resourcePath, devMode, safeMode, urlToOpen, windowDimensions}) + new AtomWindow({windowInitializationScript, @resourcePath, devMode, safeMode, atomHome, urlToOpen, windowDimensions}) else console.log "Package '#{pack.name}' does not have a url main: #{urlToOpen}" else @@ -496,7 +497,7 @@ class AtomApplication # :specPath - The directory to load specs from. # :safeMode - A Boolean that, if true, won't run specs from ~/.atom/packages # and ~/.atom/dev/packages, defaults to false. - runTests: ({headless, devMode, resourcePath, executedFrom, pathsToOpen, logFile, safeMode, timeout}) -> + runTests: ({headless, devMode, resourcePath, executedFrom, pathsToOpen, logFile, safeMode, timeout, atomHome}) -> if resourcePath isnt @resourcePath and not fs.existsSync(resourcePath) resourcePath = @resourcePath @@ -525,7 +526,7 @@ class AtomApplication testRunnerPath = @resolveTestRunnerPath(testPaths[0]) isSpec = true safeMode ?= false - new AtomWindow({windowInitializationScript, resourcePath, headless, isSpec, devMode, testRunnerPath, legacyTestRunnerPath, testPaths, logFile, safeMode}) + new AtomWindow({windowInitializationScript, resourcePath, headless, isSpec, devMode, testRunnerPath, legacyTestRunnerPath, testPaths, logFile, safeMode, atomHome}) resolveTestRunnerPath: (testPath) -> FindParentDir ?= require 'find-parent-dir' @@ -578,9 +579,9 @@ class AtomApplication # :safeMode - A Boolean which controls whether any newly opened windows # should be in safe mode or not. # :window - An {AtomWindow} to use for opening a selected file path. - promptForPathToOpen: (type, {devMode, safeMode, window}) -> + promptForPathToOpen: (type, {devMode, safeMode, atomHome, window}) -> @promptForPath type, (pathsToOpen) => - @openPaths({pathsToOpen, devMode, safeMode, window}) + @openPaths({pathsToOpen, devMode, safeMode, atomHome, window}) promptForPath: (type, callback) -> properties = diff --git a/src/browser/atom-window.coffee b/src/browser/atom-window.coffee index 16456d274..0945c0346 100644 --- a/src/browser/atom-window.coffee +++ b/src/browser/atom-window.coffee @@ -19,7 +19,7 @@ class AtomWindow isSpec: null constructor: (settings={}) -> - {@resourcePath, pathToOpen, locationsToOpen, @isSpec, @headless, @safeMode, @devMode} = settings + {@resourcePath, pathToOpen, locationsToOpen, @isSpec, @headless, @safeMode, @devMode, @atomHome} = settings locationsToOpen ?= [{pathToOpen}] if pathToOpen locationsToOpen ?= [] diff --git a/src/browser/main.coffee b/src/browser/main.coffee index 48485486b..975b3c14c 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -12,15 +12,14 @@ yargs = require 'yargs' console.log = require 'nslog' start = -> - setupAtomHome() + args = parseCommandLine() + args.atomHome = setupAtomHome() setupCompileCache() return if handleStartupEventWithSquirrel() # NB: This prevents Win10 from showing dupe items in the taskbar app.setAppUserModelId('com.squirrel.atom.atom') - args = parseCommandLine() - addPathToOpen = (event, pathToOpen) -> event.preventDefault() args.pathsToOpen.push(pathToOpen) @@ -58,13 +57,14 @@ setupCrashReporter = -> crashReporter.start(productName: 'Atom', companyName: 'GitHub') setupAtomHome = -> - return if process.env.ATOM_HOME + return process.env.ATOM_HOME if process.env.ATOM_HOME atomHome = path.join(app.getHomeDir(), '.atom') AtomPortable = require './atom-portable' atomHome = AtomPortable.getPortableAtomHomePath() if AtomPortable.isPortableInstall(process.platform, process.env.ATOM_HOME, atomHome) try atomHome = fs.realpathSync(atomHome) process.env.ATOM_HOME = atomHome + return atomHome setupCompileCache = -> compileCache = require('../compile-cache') diff --git a/static/index.js b/static/index.js index c21cd6327..f03303d14 100644 --- a/static/index.js +++ b/static/index.js @@ -19,7 +19,7 @@ // Ensure ATOM_HOME is always set before anything else is required // This is because of a difference in Linux not inherited between browser and render processes // issue #5142 - setupAtomHome() + setupAtomHome(loadSettings.atomHome) blobStore = FileSystemBlobStore.load( path.join(process.env.ATOM_HOME, 'blob-store/') @@ -69,7 +69,7 @@ function setupWindow (loadSettings) { var CompileCache = require('../src/compile-cache') - CompileCache.setAtomHomeDirectory(process.env.ATOM_HOME) + CompileCache.setAtomHomeDirectory(loadSettings.atomHome) var ModuleCache = require('../src/module-cache') ModuleCache.register(loadSettings) @@ -92,22 +92,8 @@ require('ipc').sendChannel('window-command', 'window:loaded') } - function setupAtomHome () { - if (!process.env.ATOM_HOME) { - var home - if (process.platform === 'win32') { - home = process.env.USERPROFILE - } else { - home = process.env.HOME - } - var atomHome = path.join(home, '.atom') - try { - atomHome = fs.realpathSync(atomHome) - } catch (error) { - // Ignore since the path might just not exist yet. - } - process.env.ATOM_HOME = atomHome - } + function setupAtomHome (atomHome) { + process.env.ATOM_HOME = atomHome } function setupCsonCache (cacheDir) { From f92188fc2702a53c1ad99b1174356845e3b28287 Mon Sep 17 00:00:00 2001 From: Dave Rael Date: Thu, 22 Oct 2015 16:42:34 -0600 Subject: [PATCH 02/14] Remove unused inclusion of fs --- static/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/static/index.js b/static/index.js index f03303d14..5ad84de0e 100644 --- a/static/index.js +++ b/static/index.js @@ -1,5 +1,4 @@ (function () { - var fs = require('fs-plus') var path = require('path') var FileSystemBlobStore = require('../src/file-system-blob-store') var NativeCompileCache = require('../src/native-compile-cache') From 3009d3e7d5ec0c0023304531a641804ba8c81bbf Mon Sep 17 00:00:00 2001 From: Dave Rael Date: Mon, 2 Nov 2015 05:48:27 -0800 Subject: [PATCH 03/14] Add missing atomHome references to make sure Linux execution is correctly getting the right home in all windows --- src/browser/atom-application.coffee | 4 ++-- src/browser/main.coffee | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/browser/atom-application.coffee b/src/browser/atom-application.coffee index 6ca7a2133..a29758894 100644 --- a/src/browser/atom-application.coffee +++ b/src/browser/atom-application.coffee @@ -251,7 +251,7 @@ class AtomApplication @applicationMenu.update(win, template, keystrokesByCommand) ipc.on 'run-package-specs', (event, packageSpecPath) => - @runTests({resourcePath: @devResourcePath, pathsToOpen: [packageSpecPath], headless: false}) + @runTests({resourcePath: @devResourcePath, @atomHome, pathsToOpen: [packageSpecPath], headless: false}) ipc.on 'command', (event, command) => @emit(command) @@ -467,7 +467,7 @@ class AtomApplication # :urlToOpen - The atom:// url to open. # :devMode - Boolean to control the opened window's dev mode. # :safeMode - Boolean to control the opened window's safe mode. - openUrl: ({urlToOpen, devMode, safeMode}) -> + openUrl: ({urlToOpen, devMode, safeMode, atomHome}) -> unless @packages? PackageManager = require '../package-manager' @packages = new PackageManager diff --git a/src/browser/main.coffee b/src/browser/main.coffee index 975b3c14c..a960491b3 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -57,14 +57,13 @@ setupCrashReporter = -> crashReporter.start(productName: 'Atom', companyName: 'GitHub') setupAtomHome = -> - return process.env.ATOM_HOME if process.env.ATOM_HOME + return if process.env.ATOM_HOME atomHome = path.join(app.getHomeDir(), '.atom') AtomPortable = require './atom-portable' atomHome = AtomPortable.getPortableAtomHomePath() if AtomPortable.isPortableInstall(process.platform, process.env.ATOM_HOME, atomHome) try atomHome = fs.realpathSync(atomHome) process.env.ATOM_HOME = atomHome - return atomHome setupCompileCache = -> compileCache = require('../compile-cache') From 999bf8911e2b37b64a43ddcd09d973e84c621c81 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Nov 2015 14:29:44 -0800 Subject: [PATCH 04/14] Set atomHome on load settings from env var --- src/browser/atom-application.coffee | 35 ++++++++++++++--------------- src/browser/atom-window.coffee | 1 + 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/browser/atom-application.coffee b/src/browser/atom-application.coffee index a29758894..b68ee2c73 100644 --- a/src/browser/atom-application.coffee +++ b/src/browser/atom-application.coffee @@ -65,7 +65,7 @@ class AtomApplication exit: (status) -> app.exit(status) constructor: (options) -> - {@resourcePath, @devResourcePath, @version, @devMode, @safeMode, @socketPath, timeout, @atomHome} = options + {@resourcePath, @devResourcePath, @version, @devMode, @safeMode, @socketPath, timeout} = options @socketPath = null if options.test @@ -89,16 +89,16 @@ class AtomApplication else @loadState(options) or @openPath(options) - openWithOptions: ({pathsToOpen, executedFrom, urlsToOpen, test, pidToKillWhenClosed, devMode, safeMode, atomHome, newWindow, logFile, profileStartup, timeout}) -> + openWithOptions: ({pathsToOpen, executedFrom, urlsToOpen, test, pidToKillWhenClosed, devMode, safeMode, newWindow, logFile, profileStartup, timeout}) -> if test - @runTests({headless: true, devMode, @resourcePath, executedFrom, pathsToOpen, logFile, timeout, atomHome}) + @runTests({headless: true, devMode, @resourcePath, executedFrom, pathsToOpen, logFile, timeout}) else if pathsToOpen.length > 0 - @openPaths({pathsToOpen, executedFrom, pidToKillWhenClosed, newWindow, devMode, safeMode, atomHome, profileStartup}) + @openPaths({pathsToOpen, executedFrom, pidToKillWhenClosed, newWindow, devMode, safeMode, profileStartup}) else if urlsToOpen.length > 0 - @openUrl({urlToOpen, devMode, safeMode, atomHome}) for urlToOpen in urlsToOpen + @openUrl({urlToOpen, devMode, safeMode}) for urlToOpen in urlsToOpen else # Always open a editor window if this is the first instance of Atom. - @openPath({pidToKillWhenClosed, newWindow, devMode, safeMode, atomHome, profileStartup}) + @openPath({pidToKillWhenClosed, newWindow, devMode, safeMode, profileStartup}) # Public: Removes the {AtomWindow} from the global window list. removeWindow: (window) -> @@ -164,7 +164,6 @@ class AtomApplication getLoadSettings = => devMode: @focusedWindow()?.devMode safeMode: @focusedWindow()?.safeMode - atomHome: @focusedWindow()?.atomHome @on 'application:quit', -> app.quit() @on 'application:new-window', -> @openPath(_.extend(windowDimensions: @focusedWindow()?.getDimensions(), getLoadSettings())) @@ -251,7 +250,7 @@ class AtomApplication @applicationMenu.update(win, template, keystrokesByCommand) ipc.on 'run-package-specs', (event, packageSpecPath) => - @runTests({resourcePath: @devResourcePath, @atomHome, pathsToOpen: [packageSpecPath], headless: false}) + @runTests({resourcePath: @devResourcePath, pathsToOpen: [packageSpecPath], headless: false}) ipc.on 'command', (event, command) => @emit(command) @@ -360,8 +359,8 @@ class AtomApplication # :safeMode - Boolean to control the opened window's safe mode. # :profileStartup - Boolean to control creating a profile of the startup time. # :window - {AtomWindow} to open file paths in. - openPath: ({pathToOpen, pidToKillWhenClosed, newWindow, devMode, safeMode, atomHome, profileStartup, window}) -> - @openPaths({pathsToOpen: [pathToOpen], pidToKillWhenClosed, newWindow, devMode, safeMode, atomHome, profileStartup, window}) + openPath: ({pathToOpen, pidToKillWhenClosed, newWindow, devMode, safeMode, profileStartup, window}) -> + @openPaths({pathsToOpen: [pathToOpen], pidToKillWhenClosed, newWindow, devMode, safeMode, profileStartup, window}) # Public: Opens multiple paths, in existing windows if possible. # @@ -373,7 +372,7 @@ class AtomApplication # :safeMode - Boolean to control the opened window's safe mode. # :windowDimensions - Object with height and width keys. # :window - {AtomWindow} to open file paths in. - openPaths: ({pathsToOpen, executedFrom, pidToKillWhenClosed, newWindow, devMode, safeMode, atomHome, windowDimensions, profileStartup, window}={}) -> + openPaths: ({pathsToOpen, executedFrom, pidToKillWhenClosed, newWindow, devMode, safeMode, windowDimensions, profileStartup, window}={}) -> locationsToOpen = (@locationForPathToOpen(pathToOpen, executedFrom) for pathToOpen in pathsToOpen) pathsToOpen = (locationToOpen.pathToOpen for locationToOpen in locationsToOpen) @@ -405,7 +404,7 @@ class AtomApplication windowInitializationScript ?= require.resolve('../initialize-application-window') resourcePath ?= @resourcePath - openedWindow = new AtomWindow({locationsToOpen, windowInitializationScript, resourcePath, devMode, safeMode, atomHome, windowDimensions, profileStartup}) + openedWindow = new AtomWindow({locationsToOpen, windowInitializationScript, resourcePath, devMode, safeMode, windowDimensions, profileStartup}) if pidToKillWhenClosed? @pidsToOpenWindows[pidToKillWhenClosed] = openedWindow @@ -467,7 +466,7 @@ class AtomApplication # :urlToOpen - The atom:// url to open. # :devMode - Boolean to control the opened window's dev mode. # :safeMode - Boolean to control the opened window's safe mode. - openUrl: ({urlToOpen, devMode, safeMode, atomHome}) -> + openUrl: ({urlToOpen, devMode, safeMode}) -> unless @packages? PackageManager = require '../package-manager' @packages = new PackageManager @@ -482,7 +481,7 @@ class AtomApplication packagePath = @packages.resolvePackagePath(packageName) windowInitializationScript = path.resolve(packagePath, pack.urlMain) windowDimensions = @focusedWindow()?.getDimensions() - new AtomWindow({windowInitializationScript, @resourcePath, devMode, safeMode, atomHome, urlToOpen, windowDimensions}) + new AtomWindow({windowInitializationScript, @resourcePath, devMode, safeMode, urlToOpen, windowDimensions}) else console.log "Package '#{pack.name}' does not have a url main: #{urlToOpen}" else @@ -497,7 +496,7 @@ class AtomApplication # :specPath - The directory to load specs from. # :safeMode - A Boolean that, if true, won't run specs from ~/.atom/packages # and ~/.atom/dev/packages, defaults to false. - runTests: ({headless, devMode, resourcePath, executedFrom, pathsToOpen, logFile, safeMode, timeout, atomHome}) -> + runTests: ({headless, devMode, resourcePath, executedFrom, pathsToOpen, logFile, safeMode, timeout}) -> if resourcePath isnt @resourcePath and not fs.existsSync(resourcePath) resourcePath = @resourcePath @@ -526,7 +525,7 @@ class AtomApplication testRunnerPath = @resolveTestRunnerPath(testPaths[0]) isSpec = true safeMode ?= false - new AtomWindow({windowInitializationScript, resourcePath, headless, isSpec, devMode, testRunnerPath, legacyTestRunnerPath, testPaths, logFile, safeMode, atomHome}) + new AtomWindow({windowInitializationScript, resourcePath, headless, isSpec, devMode, testRunnerPath, legacyTestRunnerPath, testPaths, logFile, safeMode}) resolveTestRunnerPath: (testPath) -> FindParentDir ?= require 'find-parent-dir' @@ -579,9 +578,9 @@ class AtomApplication # :safeMode - A Boolean which controls whether any newly opened windows # should be in safe mode or not. # :window - An {AtomWindow} to use for opening a selected file path. - promptForPathToOpen: (type, {devMode, safeMode, atomHome, window}) -> + promptForPathToOpen: (type, {devMode, safeMode, window}) -> @promptForPath type, (pathsToOpen) => - @openPaths({pathsToOpen, devMode, safeMode, atomHome, window}) + @openPaths({pathsToOpen, devMode, safeMode, window}) promptForPath: (type, callback) -> properties = diff --git a/src/browser/atom-window.coffee b/src/browser/atom-window.coffee index 0945c0346..fa9800737 100644 --- a/src/browser/atom-window.coffee +++ b/src/browser/atom-window.coffee @@ -49,6 +49,7 @@ class AtomWindow loadSettings.resourcePath = @resourcePath loadSettings.devMode ?= false loadSettings.safeMode ?= false + loadSettings.atomHome = process.env.ATOM_HOME # Only send to the first non-spec window created if @constructor.includeShellLoadTime and not @isSpec From 2e6b8a3e96358c42bb36955562b72b3eae6196a1 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Nov 2015 14:31:35 -0800 Subject: [PATCH 05/14] Guard against loadSettings error --- static/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/static/index.js b/static/index.js index 5ad84de0e..86a6d4e69 100644 --- a/static/index.js +++ b/static/index.js @@ -18,7 +18,9 @@ // Ensure ATOM_HOME is always set before anything else is required // This is because of a difference in Linux not inherited between browser and render processes // issue #5142 - setupAtomHome(loadSettings.atomHome) + if (loadSettings && loadSettings.atomHome) { + process.env.ATOM_HOME = loadSettings.atomHome + } blobStore = FileSystemBlobStore.load( path.join(process.env.ATOM_HOME, 'blob-store/') From b9d30176d8d5df95d4a6eefbc7ed23f8b107cd65 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Nov 2015 14:31:52 -0800 Subject: [PATCH 06/14] Remove unused method --- static/index.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/static/index.js b/static/index.js index 86a6d4e69..a10a11182 100644 --- a/static/index.js +++ b/static/index.js @@ -93,10 +93,6 @@ require('ipc').sendChannel('window-command', 'window:loaded') } - function setupAtomHome (atomHome) { - process.env.ATOM_HOME = atomHome - } - function setupCsonCache (cacheDir) { require('season').setCacheDir(path.join(cacheDir, 'cson')) } From a0f68ec978fdd0c2eb46caca0bd1eea9a9ef9958 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Nov 2015 14:35:30 -0800 Subject: [PATCH 07/14] Setup ATOM_HOME immediately after parsing load settings --- static/index.js | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/static/index.js b/static/index.js index a10a11182..efca711f4 100644 --- a/static/index.js +++ b/static/index.js @@ -15,13 +15,6 @@ console.error('Unhandled promise rejection %o with error: %o', promise, error) }) - // Ensure ATOM_HOME is always set before anything else is required - // This is because of a difference in Linux not inherited between browser and render processes - // issue #5142 - if (loadSettings && loadSettings.atomHome) { - process.env.ATOM_HOME = loadSettings.atomHome - } - blobStore = FileSystemBlobStore.load( path.join(process.env.ATOM_HOME, 'blob-store/') ) @@ -176,6 +169,16 @@ }, false) } + var setupAtomHome = function () { + // Ensure ATOM_HOME is always set before anything else is required + // This is because of a difference in Linux not inherited between browser and render processes + // issue #5142 + if (loadSettings && loadSettings.atomHome) { + process.env.ATOM_HOME = loadSettings.atomHome + } + } + parseLoadSettings() + setupAtomHome() setupWindowBackground() })() From 91a4d04ace5c30d096ccab0eb2db072cbd24b0d7 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Nov 2015 14:36:06 -0800 Subject: [PATCH 08/14] Return early if ATOM_HOME is already set --- static/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/static/index.js b/static/index.js index efca711f4..17fa3efc8 100644 --- a/static/index.js +++ b/static/index.js @@ -170,6 +170,10 @@ } var setupAtomHome = function () { + if (process.env.ATOM_HOME) { + return + } + // Ensure ATOM_HOME is always set before anything else is required // This is because of a difference in Linux not inherited between browser and render processes // issue #5142 From 70f5f860521be291ff749bbb71f17dbcf7ef600f Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Nov 2015 14:36:49 -0800 Subject: [PATCH 09/14] Go back to using ATOM_HOME --- static/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/index.js b/static/index.js index 17fa3efc8..e1c26d11b 100644 --- a/static/index.js +++ b/static/index.js @@ -63,7 +63,7 @@ function setupWindow (loadSettings) { var CompileCache = require('../src/compile-cache') - CompileCache.setAtomHomeDirectory(loadSettings.atomHome) + CompileCache.setAtomHomeDirectory(process.env.ATOM_HOME) var ModuleCache = require('../src/module-cache') ModuleCache.register(loadSettings) From 77f9e9e5c579f222d7f5798a3719b8a86642f71a Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Nov 2015 15:20:59 -0800 Subject: [PATCH 10/14] Don't pull atomHome from settings, use env var only --- src/browser/atom-window.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/browser/atom-window.coffee b/src/browser/atom-window.coffee index fa9800737..a346f5c77 100644 --- a/src/browser/atom-window.coffee +++ b/src/browser/atom-window.coffee @@ -19,7 +19,7 @@ class AtomWindow isSpec: null constructor: (settings={}) -> - {@resourcePath, pathToOpen, locationsToOpen, @isSpec, @headless, @safeMode, @devMode, @atomHome} = settings + {@resourcePath, pathToOpen, locationsToOpen, @isSpec, @headless, @safeMode, @devMode} = settings locationsToOpen ?= [{pathToOpen}] if pathToOpen locationsToOpen ?= [] From 2a7dc6c8de7e13a034185d34d8d72d495e52ac90 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Nov 2015 15:22:15 -0800 Subject: [PATCH 11/14] Revert parseCommandLine movement --- src/browser/main.coffee | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/browser/main.coffee b/src/browser/main.coffee index a960491b3..97d6c398a 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -12,14 +12,15 @@ yargs = require 'yargs' console.log = require 'nslog' start = -> - args = parseCommandLine() - args.atomHome = setupAtomHome() + setupAtomHome() setupCompileCache() return if handleStartupEventWithSquirrel() # NB: This prevents Win10 from showing dupe items in the taskbar app.setAppUserModelId('com.squirrel.atom.atom') + parseCommandLine() + addPathToOpen = (event, pathToOpen) -> event.preventDefault() args.pathsToOpen.push(pathToOpen) From da0b177aa25e1db4dc6a18e4e8c00663fe6491e9 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Nov 2015 15:22:44 -0800 Subject: [PATCH 12/14] Assign args --- src/browser/main.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/browser/main.coffee b/src/browser/main.coffee index 97d6c398a..48485486b 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -19,7 +19,7 @@ start = -> # NB: This prevents Win10 from showing dupe items in the taskbar app.setAppUserModelId('com.squirrel.atom.atom') - parseCommandLine() + args = parseCommandLine() addPathToOpen = (event, pathToOpen) -> event.preventDefault() From 0e6da955cdf453c9258e95ecc9ba1d559ac1ed32 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Nov 2015 15:32:06 -0800 Subject: [PATCH 13/14] Link fully to issue --- static/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/index.js b/static/index.js index e1c26d11b..f0bd9bd67 100644 --- a/static/index.js +++ b/static/index.js @@ -176,7 +176,7 @@ // Ensure ATOM_HOME is always set before anything else is required // This is because of a difference in Linux not inherited between browser and render processes - // issue #5142 + // https://github.com/atom/atom/issues/5142 if (loadSettings && loadSettings.atomHome) { process.env.ATOM_HOME = loadSettings.atomHome } From 0982825c4a11c43b7ad4b732c914da5a7abbb8ce Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Nov 2015 15:34:42 -0800 Subject: [PATCH 14/14] Link to right issue --- static/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/index.js b/static/index.js index f0bd9bd67..2a5bcad3a 100644 --- a/static/index.js +++ b/static/index.js @@ -176,7 +176,7 @@ // Ensure ATOM_HOME is always set before anything else is required // This is because of a difference in Linux not inherited between browser and render processes - // https://github.com/atom/atom/issues/5142 + // https://github.com/atom/atom/issues/5412 if (loadSettings && loadSettings.atomHome) { process.env.ATOM_HOME = loadSettings.atomHome }