From e3da370d82f4f8968cf0a4aceca1a1c165e7f209 Mon Sep 17 00:00:00 2001 From: Dave Rael Date: Tue, 20 Oct 2015 10:57:04 -0600 Subject: [PATCH 01/16] Add command line parameter to set portable If parameter included, home directory will be copied to the portable --- spec/atom-portable-spec.coffee | 19 +++++++++++++++++++ src/browser/atom-portable.coffee | 3 +++ src/browser/main.coffee | 8 ++++++-- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/spec/atom-portable-spec.coffee b/spec/atom-portable-spec.coffee index 4665621ff..957900f9f 100644 --- a/spec/atom-portable-spec.coffee +++ b/spec/atom-portable-spec.coffee @@ -4,6 +4,25 @@ temp = require "temp" rimraf = require "rimraf" AtomPortable = require "../src/browser/atom-portable" +describe "Set Portable Mode", -> + portableAtomHomePath = path.join(path.dirname(process.execPath), "../.atom").toString() + portableAtomHomeNaturallyExists = fs.existsSync(portableAtomHomePath) + portableAtomHomeBackupPath = portableAtomHomePath + ".temp" + + beforeEach -> + fs.renameSync(portableAtomHomePath, portableAtomHomeBackupPath) if fs.existsSync(portableAtomHomePath) + + afterEach -> + if portableAtomHomeNaturallyExists + fs.renameSync(portableAtomHomeBackupPath, portableAtomHomePath) if not fs.existsSync(portableAtomHomePath) + else + rimraf.sync(portableAtomHomePath) if fs.existsSync(portableAtomHomePath) + rimraf.sync(portableAtomHomeBackupPath) if fs.existsSync(portableAtomHomeBackupPath) + + it "creates portable home directory", -> + AtomPortable.setPortable(process.env.ATOM_HOME) + expect(fs.existsSync(portableAtomHomePath)).toBe true + describe "Check for Portable Mode", -> describe "Windows", -> describe "with ATOM_HOME environment variable", -> diff --git a/src/browser/atom-portable.coffee b/src/browser/atom-portable.coffee index a8cbd2d41..06ca6865e 100644 --- a/src/browser/atom-portable.coffee +++ b/src/browser/atom-portable.coffee @@ -8,6 +8,9 @@ class AtomPortable execDirectoryPath = path.dirname(process.execPath) path.join(execDirectoryPath, '..', '.atom') + @setPortable: (existingAtomHome) -> + fs.copySync(existingAtomHome, @getPortableAtomHomePath()) + @isPortableInstall: (platform, environmentAtomHome, defaultHome) -> return false unless platform is 'win32' return false if environmentAtomHome diff --git a/src/browser/main.coffee b/src/browser/main.coffee index 48485486b..c54060df2 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -61,7 +61,9 @@ setupAtomHome = -> 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) + + AtomPortable.setPortable(atomHome) if not AtomPortable.isPortableInstall(process.platform, process.env.ATOM_HOME, atomHome) and args.setPortable + atomHome = AtomPortable.getPortableAtomHomePath() if AtomPortable.isPortableInstall process.platform, process.env.ATOM_HOME, atomHome try atomHome = fs.realpathSync(atomHome) process.env.ATOM_HOME = atomHome @@ -106,6 +108,7 @@ parseCommandLine = -> options.string('timeout').describe('timeout', 'When in test mode, waits until the specified time (in minutes) and kills the process (exit code: 130).') options.alias('v', 'version').boolean('v').describe('v', 'Print the version.') options.alias('w', 'wait').boolean('w').describe('w', 'Wait for window to be closed before returning.') + options.alias('p', 'set-portable').boolean('p').describe('p', 'Set portable mode.') options.string('socket-path') args = options.argv @@ -131,6 +134,7 @@ parseCommandLine = -> profileStartup = args['profile-startup'] urlsToOpen = [] devResourcePath = process.env.ATOM_DEV_RESOURCE_PATH ? path.join(app.getHomeDir(), 'github', 'atom') + setPortable = args['set-portable'] if args['resource-path'] devMode = true @@ -151,6 +155,6 @@ parseCommandLine = -> {resourcePath, devResourcePath, pathsToOpen, urlsToOpen, executedFrom, test, version, pidToKillWhenClosed, devMode, safeMode, newWindow, - logFile, socketPath, profileStartup, timeout} + logFile, socketPath, profileStartup, timeout, setPortable} start() From a95e582907ac8e5dee4f639281a43fc20e6ad87d Mon Sep 17 00:00:00 2001 From: Dave Rael Date: Thu, 22 Oct 2015 09:28:20 -0600 Subject: [PATCH 02/16] Restore passing of args lost in merge to get command line parameter for setting portable mode into the atom home interrogation --- src/browser/main.coffee | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/browser/main.coffee b/src/browser/main.coffee index c54060df2..16e8179d3 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() + setupAtomHome(args) 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) @@ -57,7 +56,7 @@ handleStartupEventWithSquirrel = -> setupCrashReporter = -> crashReporter.start(productName: 'Atom', companyName: 'GitHub') -setupAtomHome = -> +setupAtomHome = (args) -> return if process.env.ATOM_HOME atomHome = path.join(app.getHomeDir(), '.atom') AtomPortable = require './atom-portable' From d162eec601f9a048f93be52c3438b43bcd5123cc Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Nov 2015 13:11:48 -0800 Subject: [PATCH 03/16] :art: --- src/browser/main.coffee | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/browser/main.coffee b/src/browser/main.coffee index 16e8179d3..5e5c87155 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -56,15 +56,21 @@ handleStartupEventWithSquirrel = -> setupCrashReporter = -> crashReporter.start(productName: 'Atom', companyName: 'GitHub') -setupAtomHome = (args) -> +setupAtomHome = ({setPortable}) -> return if process.env.ATOM_HOME + atomHome = path.join(app.getHomeDir(), '.atom') AtomPortable = require './atom-portable' - AtomPortable.setPortable(atomHome) if not AtomPortable.isPortableInstall(process.platform, process.env.ATOM_HOME, atomHome) and args.setPortable - atomHome = AtomPortable.getPortableAtomHomePath() if AtomPortable.isPortableInstall process.platform, process.env.ATOM_HOME, atomHome + if setPortable and not AtomPortable.isPortableInstall(process.platform, process.env.ATOM_HOME, atomHome) + AtomPortable.setPortable(atomHome) + + if AtomPortable.isPortableInstall(process.platform, process.env.ATOM_HOME, atomHome) + atomHome = AtomPortable.getPortableAtomHomePath() + try atomHome = fs.realpathSync(atomHome) + process.env.ATOM_HOME = atomHome setupCompileCache = -> From 02f508720b6cebd58f95d8e68e02ba9de02a02ee Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Nov 2015 13:13:41 -0800 Subject: [PATCH 04/16] Only use long option for set portable --- 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 5e5c87155..c97e62130 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -109,11 +109,11 @@ parseCommandLine = -> options.boolean('profile-startup').describe('profile-startup', 'Create a profile of the startup execution time.') options.alias('r', 'resource-path').string('r').describe('r', 'Set the path to the Atom source directory and enable dev-mode.') options.boolean('safe').describe('safe', 'Do not load packages from ~/.atom/packages or ~/.atom/dev/packages.') + options.boolean('set-portable').describe('set-portable', 'Set portable mode. Copies the ~/.atom folder to be a sibling of the installed Atom location.') options.alias('t', 'test').boolean('t').describe('t', 'Run the specified specs and exit with error code on failures.') options.string('timeout').describe('timeout', 'When in test mode, waits until the specified time (in minutes) and kills the process (exit code: 130).') options.alias('v', 'version').boolean('v').describe('v', 'Print the version.') options.alias('w', 'wait').boolean('w').describe('w', 'Wait for window to be closed before returning.') - options.alias('p', 'set-portable').boolean('p').describe('p', 'Set portable mode.') options.string('socket-path') args = options.argv From 5d8edcd8ef00a7217cadfc7f72e79e8dacc21747 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Nov 2015 13:15:26 -0800 Subject: [PATCH 05/16] Catch error copying portable folder --- 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 c97e62130..62c850b35 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -63,7 +63,10 @@ setupAtomHome = ({setPortable}) -> AtomPortable = require './atom-portable' if setPortable and not AtomPortable.isPortableInstall(process.platform, process.env.ATOM_HOME, atomHome) - AtomPortable.setPortable(atomHome) + try + AtomPortable.setPortable(atomHome) + catch error + console.log("Failed converting portable directory: #{error.message} #{error.stack}") if AtomPortable.isPortableInstall(process.platform, process.env.ATOM_HOME, atomHome) atomHome = AtomPortable.getPortableAtomHomePath() From 85a1471138b8dbb33b5a0705c8aa5d5f1aafd5c7 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Nov 2015 13:17:03 -0800 Subject: [PATCH 06/16] Improve copy portable error message --- 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 62c850b35..9346e2957 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -66,7 +66,7 @@ setupAtomHome = ({setPortable}) -> try AtomPortable.setPortable(atomHome) catch error - console.log("Failed converting portable directory: #{error.message} #{error.stack}") + console.log("Failed copying portable directory: #{atomHome} to #{AtomPortable.getPortableAtomHomePath()}. #{error.message} #{error.stack}") if AtomPortable.isPortableInstall(process.platform, process.env.ATOM_HOME, atomHome) atomHome = AtomPortable.getPortableAtomHomePath() From 0e9562de5d3ec4cc8210c60e48c1e2b8fde01748 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Nov 2015 13:18:03 -0800 Subject: [PATCH 07/16] Log copy error message and stack separately --- src/browser/main.coffee | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/browser/main.coffee b/src/browser/main.coffee index 9346e2957..77ac55f06 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -66,7 +66,8 @@ setupAtomHome = ({setPortable}) -> try AtomPortable.setPortable(atomHome) catch error - console.log("Failed copying portable directory: #{atomHome} to #{AtomPortable.getPortableAtomHomePath()}. #{error.message} #{error.stack}") + console.log("Failed copying portable directory: '#{atomHome}' to '#{AtomPortable.getPortableAtomHomePath()}'") + console.log("#{error.message} #{error.stack}") if AtomPortable.isPortableInstall(process.platform, process.env.ATOM_HOME, atomHome) atomHome = AtomPortable.getPortableAtomHomePath() From 6198647f297a3d9a93aa09e79f0faa86f66766b3 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Nov 2015 13:19:11 -0800 Subject: [PATCH 08/16] :art: --- spec/atom-portable-spec.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/atom-portable-spec.coffee b/spec/atom-portable-spec.coffee index 957900f9f..6722d68c6 100644 --- a/spec/atom-portable-spec.coffee +++ b/spec/atom-portable-spec.coffee @@ -5,9 +5,9 @@ rimraf = require "rimraf" AtomPortable = require "../src/browser/atom-portable" describe "Set Portable Mode", -> - portableAtomHomePath = path.join(path.dirname(process.execPath), "../.atom").toString() + portableAtomHomePath = path.join(path.dirname(process.execPath), "..", ".atom") portableAtomHomeNaturallyExists = fs.existsSync(portableAtomHomePath) - portableAtomHomeBackupPath = portableAtomHomePath + ".temp" + portableAtomHomeBackupPath = "#{portableAtomHomePath}.temp" beforeEach -> fs.renameSync(portableAtomHomePath, portableAtomHomeBackupPath) if fs.existsSync(portableAtomHomePath) From 97c19199c3ed3b774480386bd01d286b58c4b23c Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Nov 2015 14:16:52 -0800 Subject: [PATCH 09/16] --set-portable -> --portable --- 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 77ac55f06..b8a08c80a 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -113,7 +113,7 @@ parseCommandLine = -> options.boolean('profile-startup').describe('profile-startup', 'Create a profile of the startup execution time.') options.alias('r', 'resource-path').string('r').describe('r', 'Set the path to the Atom source directory and enable dev-mode.') options.boolean('safe').describe('safe', 'Do not load packages from ~/.atom/packages or ~/.atom/dev/packages.') - options.boolean('set-portable').describe('set-portable', 'Set portable mode. Copies the ~/.atom folder to be a sibling of the installed Atom location.') + options.boolean('portable').describe('portable', 'Set portable mode. Copies the ~/.atom folder to be a sibling of the installed Atom location.') options.alias('t', 'test').boolean('t').describe('t', 'Run the specified specs and exit with error code on failures.') options.string('timeout').describe('timeout', 'When in test mode, waits until the specified time (in minutes) and kills the process (exit code: 130).') options.alias('v', 'version').boolean('v').describe('v', 'Print the version.') @@ -143,7 +143,7 @@ parseCommandLine = -> profileStartup = args['profile-startup'] urlsToOpen = [] devResourcePath = process.env.ATOM_DEV_RESOURCE_PATH ? path.join(app.getHomeDir(), 'github', 'atom') - setPortable = args['set-portable'] + setPortable = args.portable if args['resource-path'] devMode = true From 9ca94affc00770e1450dc8c633c982c022a90f8e Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Nov 2015 14:20:06 -0800 Subject: [PATCH 10/16] Mention conditional copying of .atom --- 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 b8a08c80a..5ca534942 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -113,7 +113,7 @@ parseCommandLine = -> options.boolean('profile-startup').describe('profile-startup', 'Create a profile of the startup execution time.') options.alias('r', 'resource-path').string('r').describe('r', 'Set the path to the Atom source directory and enable dev-mode.') options.boolean('safe').describe('safe', 'Do not load packages from ~/.atom/packages or ~/.atom/dev/packages.') - options.boolean('portable').describe('portable', 'Set portable mode. Copies the ~/.atom folder to be a sibling of the installed Atom location.') + options.boolean('portable').describe('portable', 'Set portable mode. Copies the ~/.atom folder to be a sibling of the installed Atom location if a .atom is not already there.') options.alias('t', 'test').boolean('t').describe('t', 'Run the specified specs and exit with error code on failures.') options.string('timeout').describe('timeout', 'When in test mode, waits until the specified time (in minutes) and kills the process (exit code: 130).') options.alias('v', 'version').boolean('v').describe('v', 'Print the version.') From 7c504d36927c26106df915ca8f9a0a576adc157b Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Nov 2015 14:52:23 -0800 Subject: [PATCH 11/16] Only run specs on Windows --- spec/atom-portable-spec.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/atom-portable-spec.coffee b/spec/atom-portable-spec.coffee index 6722d68c6..b3307a258 100644 --- a/spec/atom-portable-spec.coffee +++ b/spec/atom-portable-spec.coffee @@ -4,7 +4,7 @@ temp = require "temp" rimraf = require "rimraf" AtomPortable = require "../src/browser/atom-portable" -describe "Set Portable Mode", -> +describe "Set Portable Mode on #win32", -> portableAtomHomePath = path.join(path.dirname(process.execPath), "..", ".atom") portableAtomHomeNaturallyExists = fs.existsSync(portableAtomHomePath) portableAtomHomeBackupPath = "#{portableAtomHomePath}.temp" From 95eb71090fa753c28d399a9e96f5fbd6ef7dc104 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Nov 2015 14:58:51 -0800 Subject: [PATCH 12/16] Assert portableAtomHomePath does not exist --- spec/atom-portable-spec.coffee | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spec/atom-portable-spec.coffee b/spec/atom-portable-spec.coffee index b3307a258..909cf1079 100644 --- a/spec/atom-portable-spec.coffee +++ b/spec/atom-portable-spec.coffee @@ -20,6 +20,8 @@ describe "Set Portable Mode on #win32", -> rimraf.sync(portableAtomHomeBackupPath) if fs.existsSync(portableAtomHomeBackupPath) it "creates portable home directory", -> + expect(fs.existsSync(portableAtomHomePath)).toBe false + AtomPortable.setPortable(process.env.ATOM_HOME) expect(fs.existsSync(portableAtomHomePath)).toBe true From a6c1ab0990861562f158181ad3a44cdfc50d2c47 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Nov 2015 15:00:52 -0800 Subject: [PATCH 13/16] Remove : from error message --- 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 5ca534942..60b11daf7 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -66,7 +66,7 @@ setupAtomHome = ({setPortable}) -> try AtomPortable.setPortable(atomHome) catch error - console.log("Failed copying portable directory: '#{atomHome}' to '#{AtomPortable.getPortableAtomHomePath()}'") + console.log("Failed copying portable directory '#{atomHome}' to '#{AtomPortable.getPortableAtomHomePath()}'") console.log("#{error.message} #{error.stack}") if AtomPortable.isPortableInstall(process.platform, process.env.ATOM_HOME, atomHome) From e24c48b8c5dff51655f865fda6bebe828739b305 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Nov 2015 15:01:54 -0800 Subject: [PATCH 14/16] :art: Improve spec description --- spec/atom-portable-spec.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/atom-portable-spec.coffee b/spec/atom-portable-spec.coffee index 909cf1079..91efa5779 100644 --- a/spec/atom-portable-spec.coffee +++ b/spec/atom-portable-spec.coffee @@ -19,7 +19,7 @@ describe "Set Portable Mode on #win32", -> rimraf.sync(portableAtomHomePath) if fs.existsSync(portableAtomHomePath) rimraf.sync(portableAtomHomeBackupPath) if fs.existsSync(portableAtomHomeBackupPath) - it "creates portable home directory", -> + it "creates a portable home directory", -> expect(fs.existsSync(portableAtomHomePath)).toBe false AtomPortable.setPortable(process.env.ATOM_HOME) From 07696ffb4ca2c9e9227cca616b9cf0fc23374e9b Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Nov 2015 15:02:40 -0800 Subject: [PATCH 15/16] Use fs-plus instead of rimraf to delete --- spec/atom-portable-spec.coffee | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/spec/atom-portable-spec.coffee b/spec/atom-portable-spec.coffee index 91efa5779..eaf919170 100644 --- a/spec/atom-portable-spec.coffee +++ b/spec/atom-portable-spec.coffee @@ -1,7 +1,6 @@ path = require "path" fs = require 'fs-plus' temp = require "temp" -rimraf = require "rimraf" AtomPortable = require "../src/browser/atom-portable" describe "Set Portable Mode on #win32", -> @@ -16,8 +15,8 @@ describe "Set Portable Mode on #win32", -> if portableAtomHomeNaturallyExists fs.renameSync(portableAtomHomeBackupPath, portableAtomHomePath) if not fs.existsSync(portableAtomHomePath) else - rimraf.sync(portableAtomHomePath) if fs.existsSync(portableAtomHomePath) - rimraf.sync(portableAtomHomeBackupPath) if fs.existsSync(portableAtomHomeBackupPath) + fs.removeSync(portableAtomHomePath) if fs.existsSync(portableAtomHomePath) + fs.removeSync(portableAtomHomeBackupPath) if fs.existsSync(portableAtomHomeBackupPath) it "creates a portable home directory", -> expect(fs.existsSync(portableAtomHomePath)).toBe false @@ -44,8 +43,8 @@ describe "Check for Portable Mode", -> if portableAtomHomeNaturallyExists fs.renameSync(portableAtomHomeBackupPath, portableAtomHomePath) if not fs.existsSync(portableAtomHomePath) else - rimraf.sync(portableAtomHomePath) if fs.existsSync(portableAtomHomePath) - rimraf.sync(portableAtomHomeBackupPath) if fs.existsSync(portableAtomHomeBackupPath) + fs.removeSync(portableAtomHomePath) if fs.existsSync(portableAtomHomePath) + fs.removeSync(portableAtomHomeBackupPath) if fs.existsSync(portableAtomHomeBackupPath) describe "with .atom directory sibling to exec", -> beforeEach -> @@ -56,7 +55,7 @@ describe "Check for Portable Mode", -> describe "without .atom directory sibling to exec", -> beforeEach -> - rimraf.sync(portableAtomHomePath) if fs.existsSync(portableAtomHomePath) + fs.removeSync(portableAtomHomePath) if fs.existsSync(portableAtomHomePath) it "returns false", -> expect(AtomPortable.isPortableInstall("win32", environmentAtomHome)).toBe false From afbb716a7ae151363165c9d5d12328dec9992ea8 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 3 Nov 2015 15:05:20 -0800 Subject: [PATCH 16/16] Mention .atom is a folder --- 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 60b11daf7..ca9d7e3ae 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -113,7 +113,7 @@ parseCommandLine = -> options.boolean('profile-startup').describe('profile-startup', 'Create a profile of the startup execution time.') options.alias('r', 'resource-path').string('r').describe('r', 'Set the path to the Atom source directory and enable dev-mode.') options.boolean('safe').describe('safe', 'Do not load packages from ~/.atom/packages or ~/.atom/dev/packages.') - options.boolean('portable').describe('portable', 'Set portable mode. Copies the ~/.atom folder to be a sibling of the installed Atom location if a .atom is not already there.') + options.boolean('portable').describe('portable', 'Set portable mode. Copies the ~/.atom folder to be a sibling of the installed Atom location if a .atom folder is not already there.') options.alias('t', 'test').boolean('t').describe('t', 'Run the specified specs and exit with error code on failures.') options.string('timeout').describe('timeout', 'When in test mode, waits until the specified time (in minutes) and kills the process (exit code: 130).') options.alias('v', 'version').boolean('v').describe('v', 'Print the version.')