From f330e207b464516da9c9ce7d3aa72dd7ad1422e0 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Feb 2015 15:10:34 -0800 Subject: [PATCH 01/20] Set ATOM_HOME env var at startup --- src/browser/main.coffee | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/browser/main.coffee b/src/browser/main.coffee index 035b34db0..809c9dda3 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -73,6 +73,15 @@ setupCoffeeScript = -> js = CoffeeScript.compile(coffee, filename: filePath) module._compile(js, filePath) +setupAtomHome = -> + return if process.env.ATOM_HOME + + if process.platform is 'win32' + home = process.env.USERPROFILE + else + home = process.env.HOME + process.env.ATOM_HOME = path.join(home, '.atom') + parseCommandLine = -> version = app.getVersion() options = optimist(process.argv[1..]) @@ -149,4 +158,5 @@ parseCommandLine = -> {resourcePath, pathsToOpen, executedFrom, test, version, pidToKillWhenClosed, devMode, safeMode, newWindow, specDirectory, logFile} +setupAtomHome() start() From 4c534606c2cf7e9ed1bead4bb3a7565b0546dcaf Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Feb 2015 15:10:45 -0800 Subject: [PATCH 02/20] Use inherited ATOM_HOME env var --- src/atom.coffee | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/atom.coffee b/src/atom.coffee index a1818b138..b2acd363e 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -263,9 +263,6 @@ class Atom extends Model # Make react.js faster process.env.NODE_ENV ?= 'production' unless devMode - # Set Atom's home so packages don't have to guess it - process.env.ATOM_HOME = configDirPath - @config = new Config({configDirPath, resourcePath}) @keymaps = new KeymapManager({configDirPath, resourcePath}) @keymap = @keymaps # Deprecated From c0ab2c4ac8a5a9f7c61262c2beeb60fe3c530df2 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Feb 2015 15:17:37 -0800 Subject: [PATCH 03/20] Use ATOM_HOME when building cache path --- src/6to5.coffee | 2 +- src/coffee-cache.coffee | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/6to5.coffee b/src/6to5.coffee index f0e1dc7c1..15059ad62 100644 --- a/src/6to5.coffee +++ b/src/6to5.coffee @@ -96,7 +96,7 @@ getCachePath = (sourceCode) -> unless jsCacheDir? to5Version = require('6to5-core/package.json').version - cacheDir = path.join(fs.absolute('~/.atom'), 'compile-cache') + cacheDir = path.join(process.env.ATOM_HOME, 'compile-cache') jsCacheDir = path.join(cacheDir, 'js', '6to5', create6to5VersionAndOptionsDigest(to5Version, defaultOptions)) path.join(jsCacheDir, "#{digest}.js") diff --git a/src/coffee-cache.coffee b/src/coffee-cache.coffee index 15892dd2f..1e06fd4d5 100644 --- a/src/coffee-cache.coffee +++ b/src/coffee-cache.coffee @@ -5,7 +5,7 @@ CoffeeScript = require 'coffee-script' CSON = require 'season' fs = require 'fs-plus' -cacheDir = path.join(fs.absolute('~/.atom'), 'compile-cache') +cacheDir = path.join(process.env.ATOM_HOME, 'compile-cache') stats = hits: 0 From a127240f4f2b4087262ecbc872fcb71ad0f28c3b Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Feb 2015 15:18:37 -0800 Subject: [PATCH 04/20] Use ATOM_HOME as config dir path --- src/browser/atom-application.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/browser/atom-application.coffee b/src/browser/atom-application.coffee index 9e34421d4..f0674b43e 100644 --- a/src/browser/atom-application.coffee +++ b/src/browser/atom-application.coffee @@ -416,7 +416,7 @@ class AtomApplication PackageManager = require '../package-manager' fs = require 'fs-plus' @packages = new PackageManager - configDirPath: fs.absolute('~/.atom') + configDirPath: process.env.ATOM_HOME devMode: devMode resourcePath: @resourcePath From 8cd7d7dc0cf48f3db9409dc5eaaf44660ad76b10 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Feb 2015 16:19:29 -0800 Subject: [PATCH 05/20] :arrow_up: apm@0.135 --- apm/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apm/package.json b/apm/package.json index b90f3a05e..c070e36c3 100644 --- a/apm/package.json +++ b/apm/package.json @@ -6,6 +6,6 @@ "url": "https://github.com/atom/atom.git" }, "dependencies": { - "atom-package-manager": "0.134.0" + "atom-package-manager": "0.135.0" } } From 4acd5951f588e741771e7cbab80fc09a165fd1aa Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Feb 2015 16:27:18 -0800 Subject: [PATCH 06/20] Use ATOM_HOME for nohup.out location --- atom.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/atom.sh b/atom.sh index 2f3d59c82..ecd7da052 100755 --- a/atom.sh +++ b/atom.sh @@ -75,9 +75,9 @@ elif [ $OS == 'Linux' ]; then SCRIPT=$(readlink -f "$0") USR_DIRECTORY=$(readlink -f $(dirname $SCRIPT)/..) ATOM_PATH="$USR_DIRECTORY/share/atom/atom" - DOT_ATOM_DIR="$HOME/.atom" + ATOM_HOME="${ATOM_HOME:-$HOME/.atom}" - mkdir -p "$DOT_ATOM_DIR" + mkdir -p "$ATOM_HOME" : ${TMPDIR:=/tmp} @@ -88,9 +88,9 @@ elif [ $OS == 'Linux' ]; then exit $? else ( - nohup "$ATOM_PATH" --executed-from="$(pwd)" --pid=$$ "$@" > "$DOT_ATOM_DIR/nohup.out" 2>&1 + nohup "$ATOM_PATH" --executed-from="$(pwd)" --pid=$$ "$@" > "$ATOM_HOME/nohup.out" 2>&1 if [ $? -ne 0 ]; then - cat "$DOT_ATOM_DIR/nohup.out" + cat "$ATOM_HOME/nohup.out" exit $? fi ) & From 390be558e26d38f263db0c037692fc1937225936 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Feb 2015 16:28:42 -0800 Subject: [PATCH 07/20] Use ATOM_HOME when setting configDirPath --- src/atom.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/atom.coffee b/src/atom.coffee index b2acd363e..0036ba420 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -109,7 +109,7 @@ class Atom extends Model # # Returns the absolute path to ~/.atom @getConfigDirPath: -> - @configDirPath ?= fs.absolute('~/.atom') + @configDirPath ?= process.env.ATOM_HOME # Get the path to Atom's storage directory. # From 456e51103176731754b238a5e70a19e427ce19e6 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Feb 2015 16:31:56 -0800 Subject: [PATCH 08/20] :memo: Doc ATOM_HOME --- src/browser/main.coffee | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/browser/main.coffee b/src/browser/main.coffee index 809c9dda3..8e02fead7 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -98,8 +98,12 @@ parseCommandLine = -> opened or a new window if it hasn't. Environment Variables: - ATOM_DEV_RESOURCE_PATH The path from which Atom loads source code in dev mode. - Defaults to `~/github/atom`. + + ATOM_DEV_RESOURCE_PATH The path from which Atom loads source code in dev mode. + Defaults to `~/github/atom`. + + ATOM_HOME The root path for all configuration files and folders. + Default to `~/.atom`. """ options.alias('d', 'dev').boolean('d').describe('d', 'Run in development mode.') options.alias('f', 'foreground').boolean('f').describe('f', 'Keep the browser process in the foreground.') From 745e9c828401cecb15bf8c753d5215212d94d7ac Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Feb 2015 16:32:09 -0800 Subject: [PATCH 09/20] :memo: Default -> Defaults --- 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 8e02fead7..55b895d6b 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -103,7 +103,7 @@ parseCommandLine = -> Defaults to `~/github/atom`. ATOM_HOME The root path for all configuration files and folders. - Default to `~/.atom`. + Defaults to `~/.atom`. """ options.alias('d', 'dev').boolean('d').describe('d', 'Run in development mode.') options.alias('f', 'foreground').boolean('f').describe('f', 'Keep the browser process in the foreground.') From 76f37277d9bab10b58e27d938a2ece9060b64dee Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Feb 2015 17:00:37 -0800 Subject: [PATCH 10/20] Use sibling .atom when non-standard installer location --- src/browser/main.coffee | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/browser/main.coffee b/src/browser/main.coffee index 55b895d6b..60c2a0ee6 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -14,6 +14,7 @@ process.on 'uncaughtException', (error={}) -> nslog(error.stack) if error.stack? start = -> + setupAtomHome() if process.platform is 'win32' SquirrelUpdate = require './squirrel-update' squirrelCommand = process.argv[1] @@ -76,6 +77,16 @@ setupCoffeeScript = -> setupAtomHome = -> return if process.env.ATOM_HOME + # Use install-relative .atom path on Windows when using the installer version + # in a non-default version. This enables an easy portable version. + if process.platform is 'win32' + SquirrelUpdate = require './squirrel-update' + if SquirrelUpdate.existsSync() + atomPath = path.join(process.env.LOCALAPPDATA, 'atom').toLowerCase() + if __dirname.toLowerCase().indexOf(atomPath) isnt 0 + process.env.ATOM_HOME = path.join(rootAtomFolder, '.atom') + return + if process.platform is 'win32' home = process.env.USERPROFILE else @@ -162,5 +173,4 @@ parseCommandLine = -> {resourcePath, pathsToOpen, executedFrom, test, version, pidToKillWhenClosed, devMode, safeMode, newWindow, specDirectory, logFile} -setupAtomHome() start() From 63e618cf7479129bede2fba3710e2df5ae4c94a2 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Feb 2015 17:02:08 -0800 Subject: [PATCH 11/20] Add missing rootAtomFolder var --- src/browser/main.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/src/browser/main.coffee b/src/browser/main.coffee index 60c2a0ee6..a9a1767f7 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -84,6 +84,7 @@ setupAtomHome = -> if SquirrelUpdate.existsSync() atomPath = path.join(process.env.LOCALAPPDATA, 'atom').toLowerCase() if __dirname.toLowerCase().indexOf(atomPath) isnt 0 + rootAtomFolder = path.resolve(process.execPath, '..', '..') process.env.ATOM_HOME = path.join(rootAtomFolder, '.atom') return From 0f2943989fedb886434a3d353c5978368810aa07 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Feb 2015 17:02:36 -0800 Subject: [PATCH 12/20] :memo: Fix comment typos --- src/browser/main.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/browser/main.coffee b/src/browser/main.coffee index a9a1767f7..e688605d1 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -77,8 +77,8 @@ setupCoffeeScript = -> setupAtomHome = -> return if process.env.ATOM_HOME - # Use install-relative .atom path on Windows when using the installer version - # in a non-default version. This enables an easy portable version. + # Use relative .atom path on Windows when using the installer version + # in a non-default location. This enables an easy portable version. if process.platform is 'win32' SquirrelUpdate = require './squirrel-update' if SquirrelUpdate.existsSync() From 622b3961118ff43c4f9f1d51a9b52890cd72184d Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Feb 2015 17:04:30 -0800 Subject: [PATCH 13/20] Guard against no LOCALAPPDATA env var --- 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 e688605d1..9f2eee3fe 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -81,7 +81,7 @@ setupAtomHome = -> # in a non-default location. This enables an easy portable version. if process.platform is 'win32' SquirrelUpdate = require './squirrel-update' - if SquirrelUpdate.existsSync() + if SquirrelUpdate.existsSync() and process.env.LOCALAPPDATA atomPath = path.join(process.env.LOCALAPPDATA, 'atom').toLowerCase() if __dirname.toLowerCase().indexOf(atomPath) isnt 0 rootAtomFolder = path.resolve(process.execPath, '..', '..') From 888d6dfab5bbb3b16d57ec075301c29a339186a6 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Feb 2015 17:07:35 -0800 Subject: [PATCH 14/20] Inline compile cache path --- src/less-compile-cache.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/less-compile-cache.coffee b/src/less-compile-cache.coffee index e07072637..25964b5f9 100644 --- a/src/less-compile-cache.coffee +++ b/src/less-compile-cache.coffee @@ -8,7 +8,7 @@ module.exports = class LessCompileCache Subscriber.includeInto(this) - @cacheDir: path.join(require('./coffee-cache').cacheDir, 'less') + @cacheDir: path.join(process.env.ATOM_HOME, 'compile-cache', 'less') constructor: ({resourcePath, importPaths}) -> @lessSearchPaths = [ From 4e10ea0b107a7cbbeda7d1f6b77c9b3fe36f143b Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Feb 2015 17:09:55 -0800 Subject: [PATCH 15/20] Remove unused Subscriber mixin --- src/less-compile-cache.coffee | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/less-compile-cache.coffee b/src/less-compile-cache.coffee index 25964b5f9..56acc20b1 100644 --- a/src/less-compile-cache.coffee +++ b/src/less-compile-cache.coffee @@ -1,13 +1,10 @@ path = require 'path' fs = require 'fs-plus' LessCache = require 'less-cache' -{Subscriber} = require 'emissary' # {LessCache} wrapper used by {ThemeManager} to read stylesheets. module.exports = class LessCompileCache - Subscriber.includeInto(this) - @cacheDir: path.join(process.env.ATOM_HOME, 'compile-cache', 'less') constructor: ({resourcePath, importPaths}) -> @@ -35,5 +32,3 @@ class LessCompileCache cssForFile: (stylesheetPath, lessContent) -> @cache.cssForFile(stylesheetPath, lessContent) - - destroy: -> @unsubscribe() From 71333bbc93c754217aa86cb95ae3e2c8fb84c7c9 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 4 Feb 2015 10:42:06 -0800 Subject: [PATCH 16/20] Remove custom Windows behavior --- src/browser/main.coffee | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/browser/main.coffee b/src/browser/main.coffee index 9f2eee3fe..680c25e8a 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -77,17 +77,6 @@ setupCoffeeScript = -> setupAtomHome = -> return if process.env.ATOM_HOME - # Use relative .atom path on Windows when using the installer version - # in a non-default location. This enables an easy portable version. - if process.platform is 'win32' - SquirrelUpdate = require './squirrel-update' - if SquirrelUpdate.existsSync() and process.env.LOCALAPPDATA - atomPath = path.join(process.env.LOCALAPPDATA, 'atom').toLowerCase() - if __dirname.toLowerCase().indexOf(atomPath) isnt 0 - rootAtomFolder = path.resolve(process.execPath, '..', '..') - process.env.ATOM_HOME = path.join(rootAtomFolder, '.atom') - return - if process.platform is 'win32' home = process.env.USERPROFILE else From 83568a1d8574fbab6197f33f1f01049c79eec358 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 4 Feb 2015 10:46:58 -0800 Subject: [PATCH 17/20] :memo: Mention ATOM_HOME --- docs/customizing-atom.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/customizing-atom.md b/docs/customizing-atom.md index d2151f350..02d4a28f6 100644 --- a/docs/customizing-atom.md +++ b/docs/customizing-atom.md @@ -100,6 +100,14 @@ namespaces: `core` and `editor`. You can open this file in an editor from the _Atom > Open Your Config_ menu. +### Custom Configuration Location + +You can override the location that Atom stores configuration files and folders +by setting the `ATOM_HOME` environment variable. The `ATOM_HOME` path will be +used instead of `~/.atom` when it is set. + +This option can be useful when you want to make Atom portable across machines. + ### Configuration Key Reference - `core` From 9ba106192dddca2feafb46de53f897c916de0722 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 4 Feb 2015 10:49:28 -0800 Subject: [PATCH 18/20] :memo: Add missing in --- docs/customizing-atom.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/customizing-atom.md b/docs/customizing-atom.md index 02d4a28f6..d56bd640a 100644 --- a/docs/customizing-atom.md +++ b/docs/customizing-atom.md @@ -103,7 +103,7 @@ You can open this file in an editor from the _Atom > Open Your Config_ menu. ### Custom Configuration Location You can override the location that Atom stores configuration files and folders -by setting the `ATOM_HOME` environment variable. The `ATOM_HOME` path will be +in by setting the `ATOM_HOME` environment variable. The `ATOM_HOME` path will be used instead of `~/.atom` when it is set. This option can be useful when you want to make Atom portable across machines. From a985942b16068149f51370e950e1195a22aceddd Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 4 Feb 2015 10:52:32 -0800 Subject: [PATCH 19/20] Use realpath to maintain old behavior --- src/browser/main.coffee | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/browser/main.coffee b/src/browser/main.coffee index 680c25e8a..40456d51c 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -81,7 +81,10 @@ setupAtomHome = -> home = process.env.USERPROFILE else home = process.env.HOME - process.env.ATOM_HOME = path.join(home, '.atom') + atomHome = path.join(home, '.atom') + try + atomHome = fs.realpathSync(atomHome) + process.env.ATOM_HOME = atomHome parseCommandLine = -> version = app.getVersion() From de1c6d1a5decc57b37ca3332229411ef5606d7b0 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 4 Feb 2015 10:54:25 -0800 Subject: [PATCH 20/20] Remove unused require --- src/less-compile-cache.coffee | 1 - 1 file changed, 1 deletion(-) diff --git a/src/less-compile-cache.coffee b/src/less-compile-cache.coffee index 56acc20b1..c70f312ee 100644 --- a/src/less-compile-cache.coffee +++ b/src/less-compile-cache.coffee @@ -1,5 +1,4 @@ path = require 'path' -fs = require 'fs-plus' LessCache = require 'less-cache' # {LessCache} wrapper used by {ThemeManager} to read stylesheets.