From 6d0c708a7bffa432e7fd63413464d4d1d58eca27 Mon Sep 17 00:00:00 2001 From: Yuya Tanaka Date: Sun, 20 Mar 2016 14:54:22 +0900 Subject: [PATCH 001/114] :racehorse: wrap loop of setDefaults in transact --- src/config.coffee | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/config.coffee b/src/config.coffee index 66f07516e..595cab280 100644 --- a/src/config.coffee +++ b/src/config.coffee @@ -958,9 +958,10 @@ class Config setDefaults: (keyPath, defaults) -> if defaults? and isPlainObject(defaults) keys = splitKeyPath(keyPath) - for key, childValue of defaults - continue unless defaults.hasOwnProperty(key) - @setDefaults(keys.concat([key]).join('.'), childValue) + @transact => + for key, childValue of defaults + continue unless defaults.hasOwnProperty(key) + @setDefaults(keys.concat([key]).join('.'), childValue) else try defaults = @makeValueConformToSchema(keyPath, defaults) From 3836907ee36219d32f5e12e5df07320b019fed87 Mon Sep 17 00:00:00 2001 From: Michelle Tilley Date: Fri, 3 Jun 2016 19:04:16 -0700 Subject: [PATCH 002/114] :arrow_up: apm@1.11.0 Signed-off-by: Katrina Uychaco --- apm/package.json | 2 +- build/package.json | 2 +- script/bootstrap | 7 +------ 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/apm/package.json b/apm/package.json index d4fcc851a..e547f494f 100644 --- a/apm/package.json +++ b/apm/package.json @@ -6,6 +6,6 @@ "url": "https://github.com/atom/atom.git" }, "dependencies": { - "atom-package-manager": "1.10.0" + "atom-package-manager": "1.11.0" } } diff --git a/build/package.json b/build/package.json index 2f8d88d8a..d0fd27fe1 100644 --- a/build/package.json +++ b/build/package.json @@ -32,7 +32,7 @@ "grunt-standard": "^2.0.0", "legal-eagle": "~0.13.0", "minidump": "~0.9", - "npm": "2.13.3", + "npm": "3.9.5", "rcedit": "~0.3.0", "request": "~2.27.0", "rimraf": "~2.2.2", diff --git a/script/bootstrap b/script/bootstrap index 3b9a35735..8e63de378 100755 --- a/script/bootstrap +++ b/script/bootstrap @@ -75,7 +75,7 @@ function bootstrap() { var buildInstallCommand = initialNpmCommand + npmFlags + 'install'; var buildInstallOptions = {cwd: path.resolve(__dirname, '..', 'build')}; - var apmInstallCommand = npmPath + npmFlags + '--target=0.10.40 ' + 'install'; + var apmInstallCommand = npmPath + npmFlags + '--target=4.4.5 --global-style ' + 'install'; var apmInstallOptions = {cwd: apmInstallPath}; var moduleInstallCommand = apmPath + ' install' + apmFlags; var dedupeApmCommand = apmPath + ' dedupe' + apmFlags; @@ -122,11 +122,6 @@ function bootstrap() { message: 'Installing apm...', options: apmInstallOptions }, - { - command: apmPath + ' clean' + apmFlags, - message: 'Deleting old packages...', - options: moduleInstallOptions - }, { command: moduleInstallCommand, options: moduleInstallOptions From 0ea0f15687b97a668013712d5d25fa006048fc5e Mon Sep 17 00:00:00 2001 From: Michelle Tilley Date: Fri, 3 Jun 2016 19:20:28 -0700 Subject: [PATCH 003/114] :arrow_up: apm@1.11.1 --- apm/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apm/package.json b/apm/package.json index e547f494f..335531ce3 100644 --- a/apm/package.json +++ b/apm/package.json @@ -6,6 +6,6 @@ "url": "https://github.com/atom/atom.git" }, "dependencies": { - "atom-package-manager": "1.11.0" + "atom-package-manager": "1.11.1" } } From 96db9a6dfadffef2214e6187ed941670d5ca71be Mon Sep 17 00:00:00 2001 From: Michelle Tilley Date: Sat, 11 Jun 2016 02:05:58 -0700 Subject: [PATCH 004/114] :arrow_up: ohnogit@0.0.14 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ec051cb21..bf37cc459 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "mocha": "2.5.1", "normalize-package-data": "^2.0.0", "nslog": "^3", - "ohnogit": "0.0.13", + "ohnogit": "0.0.14", "oniguruma": "^5", "pathwatcher": "~6.5", "property-accessors": "^1.1.3", From 65cb6c86c09a97386a677451c6f6d95940dc64f1 Mon Sep 17 00:00:00 2001 From: Michelle Tilley Date: Sat, 11 Jun 2016 02:06:23 -0700 Subject: [PATCH 005/114] :arrow_up: apm@1.11.2 --- apm/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apm/package.json b/apm/package.json index 335531ce3..afbcdada3 100644 --- a/apm/package.json +++ b/apm/package.json @@ -6,6 +6,6 @@ "url": "https://github.com/atom/atom.git" }, "dependencies": { - "atom-package-manager": "1.11.1" + "atom-package-manager": "1.11.2" } } From e67ebf3639e3c48ce75d0d306bca611319cc8afa Mon Sep 17 00:00:00 2001 From: Michelle Tilley Date: Mon, 13 Jun 2016 11:02:41 -0700 Subject: [PATCH 006/114] Change up native build options --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 7b6113aa0..05d040dce 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,6 +8,7 @@ branches: env: global: - ATOM_ACCESS_TOKEN=da809a6077bb1b0aa7c5623f7b2d5f1fec2faae4 + - C_INCLUDE_PATH=/usr/include/$(gcc -print-multiarch) compiler: clang @@ -51,3 +52,4 @@ addons: - git - libgnome-keyring-dev - fakeroot + - gcc-multilib From 496539208bb0a434a2a7e51394f5c58ba8786ce9 Mon Sep 17 00:00:00 2001 From: Michelle Tilley Date: Tue, 14 Jun 2016 13:40:40 -0700 Subject: [PATCH 007/114] Only read actual package.json files from disk in compile-packages-slug task --- build/tasks/compile-packages-slug-task.coffee | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build/tasks/compile-packages-slug-task.coffee b/build/tasks/compile-packages-slug-task.coffee index 7317f158a..f6f297bec 100644 --- a/build/tasks/compile-packages-slug-task.coffee +++ b/build/tasks/compile-packages-slug-task.coffee @@ -40,6 +40,8 @@ module.exports = (grunt) -> continue if path.basename(moduleDirectory) is '.bin' metadataPath = path.join(moduleDirectory, 'package.json') + continue unless fs.existsSync(metadataPath) + metadata = grunt.file.readJSON(metadataPath) continue unless metadata?.engines?.atom? From 3b849241593f9cac3470ecf320afe1169818886b Mon Sep 17 00:00:00 2001 From: Michelle Tilley Date: Tue, 14 Jun 2016 13:50:44 -0700 Subject: [PATCH 008/114] :arrow_up: Node.js@4.4.5 on Appveyor --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 51e074a4c..9a396f8cf 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -18,7 +18,7 @@ environment: secure: Q7vxmSq0bVCLTTRPzXw5ZhPTe7XYhWxX0tQV6neEkddTH6pZkOYNmSCG6VnMX2f+ matrix: - - NODE_VERSION: 0.10.35 + - NODE_VERSION: 4.4.5 install: - SET PATH=C:\Program Files\Atom\resources\cli;%PATH% From 3c717626d776e18b4ed878b18d15e2178fa8a903 Mon Sep 17 00:00:00 2001 From: Michelle Tilley Date: Tue, 14 Jun 2016 14:24:27 -0700 Subject: [PATCH 009/114] :arrow_up: apm@1.11.3 --- apm/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apm/package.json b/apm/package.json index afbcdada3..614438ec7 100644 --- a/apm/package.json +++ b/apm/package.json @@ -6,6 +6,6 @@ "url": "https://github.com/atom/atom.git" }, "dependencies": { - "atom-package-manager": "1.11.2" + "atom-package-manager": "1.11.3" } } From 4fd463a2fbd10a4eef4d538436d41b4293414a3f Mon Sep 17 00:00:00 2001 From: Michelle Tilley Date: Tue, 14 Jun 2016 14:38:51 -0700 Subject: [PATCH 010/114] Don't suppress build output when ATOM_NOISY_BUILD is set --- script/bootstrap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/bootstrap b/script/bootstrap index 8e63de378..6fcf8fef0 100755 --- a/script/bootstrap +++ b/script/bootstrap @@ -97,7 +97,7 @@ function bootstrap() { } var moduleInstallOptions = {env: moduleInstallEnv}; - if (process.argv.indexOf('--no-quiet') === -1) { + if (process.argv.indexOf('--no-quiet') === -1 || process.env.ATOM_NOISY_BUILD) { buildInstallCommand += ' --loglevel error'; apmInstallCommand += ' --loglevel error'; moduleInstallCommand += ' --loglevel error'; From acb0ae9225e75f8083b0e76a7c7984e434392600 Mon Sep 17 00:00:00 2001 From: Michelle Tilley Date: Tue, 14 Jun 2016 14:39:12 -0700 Subject: [PATCH 011/114] Set ATOM_NOISY_BUILD on Appveyor --- appveyor.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/appveyor.yml b/appveyor.yml index 9a396f8cf..ef65771f2 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -16,6 +16,7 @@ environment: ATOM_DEV_RESOURCE_PATH: c:\projects\atom ATOM_ACCESS_TOKEN: secure: Q7vxmSq0bVCLTTRPzXw5ZhPTe7XYhWxX0tQV6neEkddTH6pZkOYNmSCG6VnMX2f+ + ATOM_NOISY_BUILD: 1 matrix: - NODE_VERSION: 4.4.5 From dc659ff9b3aa9119e165dc13063e04d97a794806 Mon Sep 17 00:00:00 2001 From: Michelle Tilley Date: Tue, 14 Jun 2016 15:17:05 -0700 Subject: [PATCH 012/114] :arrow_up: apm@1.11.4 --- apm/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apm/package.json b/apm/package.json index 614438ec7..3bf1fe769 100644 --- a/apm/package.json +++ b/apm/package.json @@ -6,6 +6,6 @@ "url": "https://github.com/atom/atom.git" }, "dependencies": { - "atom-package-manager": "1.11.3" + "atom-package-manager": "1.11.4" } } From fa7d1d66875421372bcceb0f1a07e818a4af5e72 Mon Sep 17 00:00:00 2001 From: Michelle Tilley Date: Tue, 14 Jun 2016 15:31:59 -0700 Subject: [PATCH 013/114] Use g++ 4.8 on travis --- .travis.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 05d040dce..d28157b37 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ branches: env: global: - ATOM_ACCESS_TOKEN=da809a6077bb1b0aa7c5623f7b2d5f1fec2faae4 - - C_INCLUDE_PATH=/usr/include/$(gcc -print-multiarch) + - CXX=g++-4.8 compiler: clang @@ -47,9 +47,11 @@ notifications: addons: apt: + sources: + - ubuntu-toolchain-r-test packages: - build-essential - git - libgnome-keyring-dev - fakeroot - - gcc-multilib + - g++-4.8 From 6af247e601dd9c180fa9c6e3583b4c39e5e5fb8e Mon Sep 17 00:00:00 2001 From: Michelle Tilley Date: Tue, 14 Jun 2016 16:53:24 -0700 Subject: [PATCH 014/114] Only test on Node 4 on Travis --- .travis.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index d28157b37..6bd3c78cb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,14 +14,12 @@ compiler: clang matrix: include: - - os: linux - env: NODE_VERSION=0.12 - os: linux env: NODE_VERSION=4 - os: osx - env: ATOM_SPECS_TASK=core NODE_VERSION=0.12 + env: ATOM_SPECS_TASK=core NODE_VERSION=4 - os: osx - env: ATOM_SPECS_TASK=packages NODE_VERSION=0.12 + env: ATOM_SPECS_TASK=packages NODE_VERSION=4 sudo: false From c6fbae521b4d5262808fa08131cda66a98d9e427 Mon Sep 17 00:00:00 2001 From: Michelle Tilley Date: Tue, 14 Jun 2016 17:59:29 -0700 Subject: [PATCH 015/114] Use --delete-prefix with nvm use --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 6bd3c78cb..563f8168b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,7 +27,7 @@ install: - git clone https://github.com/creationix/nvm.git /tmp/.nvm - source /tmp/.nvm/nvm.sh - nvm install $NODE_VERSION - - nvm use $NODE_VERSION + - nvm use --delete-prefix $NODE_VERSION script: script/cibuild From 048c1192651c4ee421b711aa87461a27b027a1c2 Mon Sep 17 00:00:00 2001 From: Michelle Tilley Date: Tue, 28 Jun 2016 16:03:43 -0700 Subject: [PATCH 016/114] Don't use g++-4.8 --- .travis.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 563f8168b..cf0c07186 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,6 @@ branches: env: global: - ATOM_ACCESS_TOKEN=da809a6077bb1b0aa7c5623f7b2d5f1fec2faae4 - - CXX=g++-4.8 compiler: clang @@ -52,4 +51,3 @@ addons: - git - libgnome-keyring-dev - fakeroot - - g++-4.8 From 4558833ef6869030e56ee3b009a3220a518a5f36 Mon Sep 17 00:00:00 2001 From: Michelle Tilley Date: Wed, 29 Jun 2016 13:31:36 -0700 Subject: [PATCH 017/114] Include gcc-multilib on travis --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index cf0c07186..58f82c013 100644 --- a/.travis.yml +++ b/.travis.yml @@ -51,3 +51,4 @@ addons: - git - libgnome-keyring-dev - fakeroot + - gcc-multilib From c8263bddb99c1fca8146663945d40a81998f0035 Mon Sep 17 00:00:00 2001 From: Michelle Tilley Date: Tue, 5 Jul 2016 09:49:42 -0700 Subject: [PATCH 018/114] Use newer OS X on Travis --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 58f82c013..e894731ea 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,6 +9,8 @@ env: global: - ATOM_ACCESS_TOKEN=da809a6077bb1b0aa7c5623f7b2d5f1fec2faae4 +osx_image: xcode7.3 + compiler: clang matrix: From 3e826c1357808de0442a807149f0185a39c78d16 Mon Sep 17 00:00:00 2001 From: Damien Guard Date: Fri, 8 Jul 2016 10:04:59 -0700 Subject: [PATCH 019/114] Initial checkpoint not yet tested with settings-view changes --- src/main-process/squirrel-update.coffee | 8 +- src/main-process/win-registry.coffee | 62 ------------- src/main-process/win-shell.coffee | 115 ++++++++++++++++++++++++ 3 files changed, 119 insertions(+), 66 deletions(-) delete mode 100644 src/main-process/win-registry.coffee create mode 100644 src/main-process/win-shell.coffee diff --git a/src/main-process/squirrel-update.coffee b/src/main-process/squirrel-update.coffee index a1bfc5359..167fe105a 100644 --- a/src/main-process/squirrel-update.coffee +++ b/src/main-process/squirrel-update.coffee @@ -1,7 +1,7 @@ fs = require 'fs-plus' path = require 'path' Spawner = require './spawner' -WinRegistry = require './win-registry' +WinShell = require './win-shell' WinPowerShell = require './win-powershell' appFolder = path.resolve(process.execPath, '..') @@ -130,19 +130,19 @@ exports.handleStartupEvent = (app, squirrelCommand) -> switch squirrelCommand when '--squirrel-install' createShortcuts -> - WinRegistry.installContextMenu -> + WindowsShell.installingAtom -> addCommandsToPath -> app.quit() true when '--squirrel-updated' updateShortcuts -> - WinRegistry.installContextMenu -> + WindowsShell.upgradingAtom -> addCommandsToPath -> app.quit() true when '--squirrel-uninstall' removeShortcuts -> - WinRegistry.uninstallContextMenu -> + WindowsShell.uninstallingAtom -> removeCommandsFromPath -> app.quit() true diff --git a/src/main-process/win-registry.coffee b/src/main-process/win-registry.coffee deleted file mode 100644 index f4b81b377..000000000 --- a/src/main-process/win-registry.coffee +++ /dev/null @@ -1,62 +0,0 @@ -path = require 'path' -Spawner = require './spawner' - -if process.env.SystemRoot - system32Path = path.join(process.env.SystemRoot, 'System32') - regPath = path.join(system32Path, 'reg.exe') -else - regPath = 'reg.exe' - -# Registry keys used for context menu -fileKeyPath = 'HKCU\\Software\\Classes\\*\\shell\\Atom' -directoryKeyPath = 'HKCU\\Software\\Classes\\directory\\shell\\Atom' -backgroundKeyPath = 'HKCU\\Software\\Classes\\directory\\background\\shell\\Atom' -applicationsKeyPath = 'HKCU\\Software\\Classes\\Applications\\atom.exe' - -# Spawn reg.exe and callback when it completes -spawnReg = (args, callback) -> - Spawner.spawn(regPath, args, callback) - -# Install the Open with Atom explorer context menu items via the registry. -# -# * `callback` The {Function} to call after registry operation is done. -# It will be invoked with the same arguments provided by {Spawner.spawn}. -# -# Returns `undefined`. -exports.installContextMenu = (callback) -> - addToRegistry = (args, callback) -> - args.unshift('add') - args.push('/f') - spawnReg(args, callback) - - installFileHandler = (callback) -> - args = ["#{applicationsKeyPath}\\shell\\open\\command", '/ve', '/d', "\"#{process.execPath}\" \"%1\""] - addToRegistry(args, callback) - - installMenu = (keyPath, arg, callback) -> - args = [keyPath, '/ve', '/d', 'Open with Atom'] - addToRegistry args, -> - args = [keyPath, '/v', 'Icon', '/d', "\"#{process.execPath}\""] - addToRegistry args, -> - args = ["#{keyPath}\\command", '/ve', '/d', "\"#{process.execPath}\" \"#{arg}\""] - addToRegistry(args, callback) - - installMenu fileKeyPath, '%1', -> - installMenu directoryKeyPath, '%1', -> - installMenu backgroundKeyPath, '%V', -> - installFileHandler(callback) - -# Uninstall the Open with Atom explorer context menu items via the registry. -# -# * `callback` The {Function} to call after registry operation is done. -# It will be invoked with the same arguments provided by {Spawner.spawn}. -# -# Returns `undefined`. -exports.uninstallContextMenu = (callback) -> - deleteFromRegistry = (keyPath, callback) -> - spawnReg(['delete', keyPath, '/f'], callback) - - deleteFromRegistry fileKeyPath, -> - deleteFromRegistry directoryKeyPath, -> - deleteFromRegistry backgroundKeyPath, -> - deleteFromRegistry(applicationsKeyPath, callback) diff --git a/src/main-process/win-shell.coffee b/src/main-process/win-shell.coffee new file mode 100644 index 000000000..a3ce033c0 --- /dev/null +++ b/src/main-process/win-shell.coffee @@ -0,0 +1,115 @@ +Registry = require 'winreg' +Path = require 'path' + +exeName = Path.basename(process.execPath) +appPath = "\"#{process.execPath}\"" +appName = exeName.replace('atom', 'Atom').replace('beta', 'Beta').replace('.exe', '') + +contextRegistrationParts = [ + {key: 'command', name: '', value: "#{appPath} \"%1\""}, + {name: '', value: "Open with #{appName}"}, + {name: 'Icon', value: "#{appPath}"} +] + +# Register Atom as a file handler to be associated with file types +exports.isFileHandlerRegistered = (callback) -> + isRegisteredToThisApp fileHandlerRegistration, callback + +exports.registerFileHandler = (callback) -> + addToRegistry fileHandlerRegistration, callback + +exports.removeFileHandler = (callback) -> + removeFromRegistry fileHandlerRegistration, callback + +fileHandlerRegistration = { + key: "\\Software\\Classes\\Applications\\#{exeName}", + parts: [{key: 'shell\\open\\command', name: '', value: "#{appPath} \"%1\""}] +} + +# Add "Open with Atom" to the File Explorer context menu for files +exports.isInContextFilesMenu = (callback) -> + isRegisteredToThisApp contextFilesRegistration, callback + +exports.addToContextFilesMenu = (callback) -> + addToRegistry contextFilesRegistration, callback + +exports.removeFromContextFilesMenu = (callback) -> + removeFromRegistry contextFilesRegistration, callback + +contextFilesRegistration = { + key: "\\Software\\Classes\\*\\shell\\#{appName}", + parts: contextRegistryParts +} + +# Add "Open with Atom" to the File Explorer context menu for folders +exports.isInContextFoldersMenu = (callback) -> + isRegisteredToThisApp contextFoldersRegistration, callback + +exports.addToContextFoldersMenu = (callback) -> + addToRegistry contextFoldersRegistration, -> + addToRegistry contexBackgroundRegistration, callback + +exports.removeFromContextFoldersMenu = (callback) -> + removeFromRegistry contextFoldersRegistration, -> + removeFromRegistry contextBackgroundRegistration, callback + +contextFoldersRegistration = { + key: "\\Software\\Classes\\Directory\\shell\\#{appName}", # Right-click folder + parts: contextRegistryParts +} + +contextFoldersBackgroundRegistration = { # Right-click the background of a folder + key: "\\Software\\Classes\\Directory\\background\\shell\\#{appName}", + parts: JSON.parse(JSON.stringify(contextRegistryParts).replace('%1', '%V')) +} + +# Installing Atom should register the file handler only +exports.installingAtom = (callback) -> + registerFileHandler callback + +# Upgrading Atom should upgrade any existing registry keys for this exeName +exports.upgradingAtom = (callback) -> + updateRegistryIfSameExeName fileHandlerRegistration, -> + updateRegistryIfSameExeName contextFileRegistration, -> + updateRegistryIfSameExeName contextFolderRegistration, -> + updateRegistryIfSameExeName contextBackgroundRegistration, callback + +# Uninstalling Atom should remove any registry keys pointing to this appPath +exports.uninstallingAtom = (callback) -> + removeFromRegistryIfUs fileHandlerRegistration, -> + removeFromRegistryIfUs contextFileRegistration, -> + removeFromRegistryIfUs contextFolderRegistration, -> + removeFromRegistryIfUs contextBackgroundRegistration, callback + +getRegistryFirstValue = (registration, callback) -> + primaryPart = registration.parts[0] + new Registry({hive: 'HKCU', key: "#{registration.key}\\#{primaryPart.key}"}) + .get primaryPart.name, callback + +isRegisteredToThisApp = (registration, callback) -> + getRegistryFirstValue registration, (err, val) -> + callback(not err? and val.value is registration.parts[0].value) + +addToRegistry = (registration, callback) -> + doneCount = registration.parts.length + registration.parts.forEach((part) -> + reg = new Registry({hive: 'HKCU', key: if part.key? then "#{registration.key}\\#{part.key}" else registration.key}) + reg.create( -> reg.set part.name, Registry.REG_SZ, part.value, -> callback() if doneCount-- is 0) + ) + +updateRegistryIfSameExeName = (registration, callback) -> + getRegistryFirstValue registration, (err, val) -> + if not err? and val.value.endsWith(exeName) + addToRegistry registration, callback + else + callback(err, val) + +removeFromRegistry = (registration, callback) -> + new Registry({hive: 'HKCU', key: registration.key}).destroy callback + +removeFromRegistryIfThisApp = (registration, callback) -> + isRegisteredToThisApp registration, (isThisApp) -> + if isThisApp + removeFromRegistry registration, callback + else + callback(isThisApp) From 6a4f6751d12f4a43db8b3dad4e60a54ae01af762 Mon Sep 17 00:00:00 2001 From: Damien Guard Date: Fri, 8 Jul 2016 13:31:19 -0700 Subject: [PATCH 020/114] Revise API to reduce surface area --- package.json | 1 + src/main-process/squirrel-update.coffee | 20 ++-- src/main-process/win-shell.coffee | 134 +++++++----------------- 3 files changed, 49 insertions(+), 106 deletions(-) diff --git a/package.json b/package.json index 29152f4ad..583699946 100644 --- a/package.json +++ b/package.json @@ -61,6 +61,7 @@ "text-buffer": "9.2.2", "typescript-simple": "1.0.0", "underscore-plus": "^1.6.6", + "winreg": "^1.2.1", "yargs": "^3.23.0" }, "packageDependencies": { diff --git a/src/main-process/squirrel-update.coffee b/src/main-process/squirrel-update.coffee index 167fe105a..5dfff6710 100644 --- a/src/main-process/squirrel-update.coffee +++ b/src/main-process/squirrel-update.coffee @@ -130,21 +130,27 @@ exports.handleStartupEvent = (app, squirrelCommand) -> switch squirrelCommand when '--squirrel-install' createShortcuts -> - WindowsShell.installingAtom -> + WinShell.fileHandler.register -> addCommandsToPath -> app.quit() true when '--squirrel-updated' updateShortcuts -> - WindowsShell.upgradingAtom -> - addCommandsToPath -> - app.quit() + WinShell.fileHandler.update -> + WinShell.fileContextMenu.update -> + WinShell.folderContextMenu.update -> + WinShell.folderBackgroundContextMenu.update -> + addCommandsToPath -> + app.quit() true when '--squirrel-uninstall' removeShortcuts -> - WindowsShell.uninstallingAtom -> - removeCommandsFromPath -> - app.quit() + WinShell.fileHandler.deregister -> + WinShell.fileContextMenu.deregister -> + WinShell.folderContextMenu.deregister -> + WinShell.folderBackgroundContextMenu.deregister -> + removeCommandsFromPath -> + app.quit() true when '--squirrel-obsolete' app.quit() diff --git a/src/main-process/win-shell.coffee b/src/main-process/win-shell.coffee index a3ce033c0..2cc3f066c 100644 --- a/src/main-process/win-shell.coffee +++ b/src/main-process/win-shell.coffee @@ -5,111 +5,47 @@ exeName = Path.basename(process.execPath) appPath = "\"#{process.execPath}\"" appName = exeName.replace('atom', 'Atom').replace('beta', 'Beta').replace('.exe', '') +class ShellOption + constructor: (key, parts) -> + @key = key + @parts = parts + isRegistered: (callback) => + new Registry({hive: 'HKCU', key: "#{@key}\\#{@parts[0].key}"}) + .get @parts[0].name, (err, val) -> + callback(not err? and val.value is @parts[0].value) + register: (callback) -> + doneCount = @parts.length + @parts.forEach((part) -> + reg = new Registry({hive: 'HKCU', key: if @part.key? then "#{@key}\\#{@part.key}" else @key}) + reg.create( -> reg.set part.name, Registry.REG_SZ, part.value, -> callback() if doneCount-- is 0)) + deregister: (callback) -> + @isRegistered (isRegistered) -> + if isRegistered + new Registry({hive: 'HKCU', key: @key}).destroy callback null, true + else + callback null, false + update: (callback) -> + new Registry({hive: 'HKCU', key: "#{@key}\\#{@parts[0].key}"}) + .get @parts[0].name, (err, val) -> + if err? or not val.value.endsWith '\\' + exeName + callback err, val + else + register callback + +exports.fileHandler = new ShellOption("\\Software\\Classes\\Applications\\#{exeName}", + parts: [{key: 'shell\\open\\command', name: '', value: "#{appPath} \"%1\""}] +) + contextRegistrationParts = [ {key: 'command', name: '', value: "#{appPath} \"%1\""}, {name: '', value: "Open with #{appName}"}, {name: 'Icon', value: "#{appPath}"} ] -# Register Atom as a file handler to be associated with file types -exports.isFileHandlerRegistered = (callback) -> - isRegisteredToThisApp fileHandlerRegistration, callback +exports.fileContextMenu = new ShellOption("\\Software\\Classes\\*\\shell\\#{appName}", parts: contextRegistryParts) -exports.registerFileHandler = (callback) -> - addToRegistry fileHandlerRegistration, callback +exports.folderContextMenu = new ShellOption("\\Software\\Classes\\Directory\\shell\\#{appName}", parts: contextRegistryParts) -exports.removeFileHandler = (callback) -> - removeFromRegistry fileHandlerRegistration, callback - -fileHandlerRegistration = { - key: "\\Software\\Classes\\Applications\\#{exeName}", - parts: [{key: 'shell\\open\\command', name: '', value: "#{appPath} \"%1\""}] -} - -# Add "Open with Atom" to the File Explorer context menu for files -exports.isInContextFilesMenu = (callback) -> - isRegisteredToThisApp contextFilesRegistration, callback - -exports.addToContextFilesMenu = (callback) -> - addToRegistry contextFilesRegistration, callback - -exports.removeFromContextFilesMenu = (callback) -> - removeFromRegistry contextFilesRegistration, callback - -contextFilesRegistration = { - key: "\\Software\\Classes\\*\\shell\\#{appName}", - parts: contextRegistryParts -} - -# Add "Open with Atom" to the File Explorer context menu for folders -exports.isInContextFoldersMenu = (callback) -> - isRegisteredToThisApp contextFoldersRegistration, callback - -exports.addToContextFoldersMenu = (callback) -> - addToRegistry contextFoldersRegistration, -> - addToRegistry contexBackgroundRegistration, callback - -exports.removeFromContextFoldersMenu = (callback) -> - removeFromRegistry contextFoldersRegistration, -> - removeFromRegistry contextBackgroundRegistration, callback - -contextFoldersRegistration = { - key: "\\Software\\Classes\\Directory\\shell\\#{appName}", # Right-click folder - parts: contextRegistryParts -} - -contextFoldersBackgroundRegistration = { # Right-click the background of a folder - key: "\\Software\\Classes\\Directory\\background\\shell\\#{appName}", +exports.folderBackgroundContextMenu = new ShellOption("\\Software\\Classes\\Directory\\background\\shell\\#{appName}", parts: JSON.parse(JSON.stringify(contextRegistryParts).replace('%1', '%V')) -} - -# Installing Atom should register the file handler only -exports.installingAtom = (callback) -> - registerFileHandler callback - -# Upgrading Atom should upgrade any existing registry keys for this exeName -exports.upgradingAtom = (callback) -> - updateRegistryIfSameExeName fileHandlerRegistration, -> - updateRegistryIfSameExeName contextFileRegistration, -> - updateRegistryIfSameExeName contextFolderRegistration, -> - updateRegistryIfSameExeName contextBackgroundRegistration, callback - -# Uninstalling Atom should remove any registry keys pointing to this appPath -exports.uninstallingAtom = (callback) -> - removeFromRegistryIfUs fileHandlerRegistration, -> - removeFromRegistryIfUs contextFileRegistration, -> - removeFromRegistryIfUs contextFolderRegistration, -> - removeFromRegistryIfUs contextBackgroundRegistration, callback - -getRegistryFirstValue = (registration, callback) -> - primaryPart = registration.parts[0] - new Registry({hive: 'HKCU', key: "#{registration.key}\\#{primaryPart.key}"}) - .get primaryPart.name, callback - -isRegisteredToThisApp = (registration, callback) -> - getRegistryFirstValue registration, (err, val) -> - callback(not err? and val.value is registration.parts[0].value) - -addToRegistry = (registration, callback) -> - doneCount = registration.parts.length - registration.parts.forEach((part) -> - reg = new Registry({hive: 'HKCU', key: if part.key? then "#{registration.key}\\#{part.key}" else registration.key}) - reg.create( -> reg.set part.name, Registry.REG_SZ, part.value, -> callback() if doneCount-- is 0) - ) - -updateRegistryIfSameExeName = (registration, callback) -> - getRegistryFirstValue registration, (err, val) -> - if not err? and val.value.endsWith(exeName) - addToRegistry registration, callback - else - callback(err, val) - -removeFromRegistry = (registration, callback) -> - new Registry({hive: 'HKCU', key: registration.key}).destroy callback - -removeFromRegistryIfThisApp = (registration, callback) -> - isRegisteredToThisApp registration, (isThisApp) -> - if isThisApp - removeFromRegistry registration, callback - else - callback(isThisApp) +) From 81ebb686bb7aa9e8a040cac18877b0e3d0c4766f Mon Sep 17 00:00:00 2001 From: Damien Guard Date: Mon, 11 Jul 2016 09:59:08 -0700 Subject: [PATCH 021/114] Fixes from testing Windows shell integration --- exports/atom.coffee | 4 ++++ src/main-process/win-shell.coffee | 28 +++++++++++++++------------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/exports/atom.coffee b/exports/atom.coffee index 4953d3756..a76352164 100644 --- a/exports/atom.coffee +++ b/exports/atom.coffee @@ -19,6 +19,10 @@ module.exports = Disposable: Disposable CompositeDisposable: CompositeDisposable +# Shell integration is required by both Squirrel and Settings-View +if process.platform is 'win32' + module.exports.WinShell = require '../src/main-process/win-shell' + # The following classes can't be used from a Task handler and should therefore # only be exported when not running as a child node process unless process.env.ATOM_SHELL_INTERNAL_RUN_AS_NODE diff --git a/src/main-process/win-shell.coffee b/src/main-process/win-shell.coffee index 2cc3f066c..5e1e1428a 100644 --- a/src/main-process/win-shell.coffee +++ b/src/main-process/win-shell.coffee @@ -11,20 +11,20 @@ class ShellOption @parts = parts isRegistered: (callback) => new Registry({hive: 'HKCU', key: "#{@key}\\#{@parts[0].key}"}) - .get @parts[0].name, (err, val) -> + .get @parts[0].name, (err, val) => callback(not err? and val.value is @parts[0].value) - register: (callback) -> + register: (callback) => doneCount = @parts.length - @parts.forEach((part) -> - reg = new Registry({hive: 'HKCU', key: if @part.key? then "#{@key}\\#{@part.key}" else @key}) + @parts.forEach((part) => + reg = new Registry({hive: 'HKCU', key: if part.key? then "#{@key}\\#{part.key}" else @key}) reg.create( -> reg.set part.name, Registry.REG_SZ, part.value, -> callback() if doneCount-- is 0)) - deregister: (callback) -> - @isRegistered (isRegistered) -> + deregister: (callback) => + @isRegistered (isRegistered) => if isRegistered - new Registry({hive: 'HKCU', key: @key}).destroy callback null, true + new Registry({hive: 'HKCU', key: @key}).destroy -> callback null, true else callback null, false - update: (callback) -> + update: (callback) => new Registry({hive: 'HKCU', key: "#{@key}\\#{@parts[0].key}"}) .get @parts[0].name, (err, val) -> if err? or not val.value.endsWith '\\' + exeName @@ -32,20 +32,22 @@ class ShellOption else register callback +exports.appName = appName + exports.fileHandler = new ShellOption("\\Software\\Classes\\Applications\\#{exeName}", - parts: [{key: 'shell\\open\\command', name: '', value: "#{appPath} \"%1\""}] + [{key: 'shell\\open\\command', name: '', value: "#{appPath} \"%1\""}] ) -contextRegistrationParts = [ +contextParts = [ {key: 'command', name: '', value: "#{appPath} \"%1\""}, {name: '', value: "Open with #{appName}"}, {name: 'Icon', value: "#{appPath}"} ] -exports.fileContextMenu = new ShellOption("\\Software\\Classes\\*\\shell\\#{appName}", parts: contextRegistryParts) +exports.fileContextMenu = new ShellOption("\\Software\\Classes\\*\\shell\\#{appName}", contextParts) -exports.folderContextMenu = new ShellOption("\\Software\\Classes\\Directory\\shell\\#{appName}", parts: contextRegistryParts) +exports.folderContextMenu = new ShellOption("\\Software\\Classes\\Directory\\shell\\#{appName}", contextParts) exports.folderBackgroundContextMenu = new ShellOption("\\Software\\Classes\\Directory\\background\\shell\\#{appName}", - parts: JSON.parse(JSON.stringify(contextRegistryParts).replace('%1', '%V')) + JSON.parse(JSON.stringify(contextParts).replace('%1', '%V')) ) From 5a8ced324e4885b5f49a554d0da3d00f8b49dc95 Mon Sep 17 00:00:00 2001 From: Damien Guard Date: Tue, 12 Jul 2016 18:11:59 -0700 Subject: [PATCH 022/114] Fixup Squirrel installer spec tests --- spec/squirrel-update-spec.coffee | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/spec/squirrel-update-spec.coffee b/spec/squirrel-update-spec.coffee index a8a39eb54..51442abc6 100644 --- a/spec/squirrel-update-spec.coffee +++ b/spec/squirrel-update-spec.coffee @@ -5,7 +5,7 @@ temp = require 'temp' SquirrelUpdate = require '../src/main-process/squirrel-update' Spawner = require '../src/main-process/spawner' WinPowerShell = require '../src/main-process/win-powershell' -WinRegistry = require '../src/main-process/win-registry' +WinShell = require '../src/main-process/win-shell' # Run passed callback as Spawner.spawn() would do invokeCallback = (callback) -> @@ -26,12 +26,11 @@ describe "Windows Squirrel Update", -> # do nothing on command, just run passed callback invokeCallback callback - # Prevent any actual change to Windows registry - for own method of WinRegistry - # all WinRegistry APIs share the same signature - spyOn(WinRegistry, method).andCallFake (callback) -> - # do nothing on registry, just run passed callback - invokeCallback callback + # Prevent any actual change to Windows Shell + for own property of WinShell + for own method of property + spyOn(property, method).andCallFake (callback) -> + invokeCallback callback it "quits the app on all squirrel events", -> app = quit: jasmine.createSpy('quit') From 35aee0b8e49f3e85442847176076cb248d0bedf8 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Thu, 14 Jul 2016 17:01:26 +0200 Subject: [PATCH 023/114] Use nvm on Linux --- script/cibuild-atom-linux | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/script/cibuild-atom-linux b/script/cibuild-atom-linux index 2c3395608..b04d73f62 100755 --- a/script/cibuild-atom-linux +++ b/script/cibuild-atom-linux @@ -7,10 +7,10 @@ export BUILD_ATOM_RELEASES_S3_KEY=$BUILD_ATOM_LINUX_RELEASES_S3_KEY export BUILD_ATOM_RELEASES_S3_SECRET=$BUILD_ATOM_LINUX_RELEASES_S3_SECRET export BUILD_ATOM_RELEASES_S3_BUCKET=$BUILD_ATOM_LINUX_RELEASES_S3_BUCKET -if [ -d /usr/local/share/nodenv ]; then - export NODENV_ROOT=/usr/local/share/nodenv - export PATH=/usr/local/share/nodenv/bin:/usr/local/share/nodenv/shims:$PATH - export NODENV_VERSION="v0.10.21" -fi +git clone https://github.com/creationix/nvm.git /tmp/.nvm +source /tmp/.nvm/nvm.sh +nvm install 4.4.7 +nvm use 4.4.7 +npm install -g npm script/cibuild From e3743db892e964a49352c881167cb16f38201b27 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Thu, 14 Jul 2016 17:25:58 +0200 Subject: [PATCH 024/114] Use node 4 and npm 3 on rpm --- Dockerfile | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index d792c30c5..37339ccfd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,11 +12,13 @@ RUN yum install -y \ glibc-devel \ git-core \ libgnome-keyring-devel \ - rpmdevtools \ - nodejs \ - npm + rpmdevtools -RUN npm install -g npm@1.4.28 --loglevel error +RUN git clone https://github.com/creationix/nvm.git /tmp/.nvm +RUN source /tmp/.nvm/nvm.sh +RUN nvm install 4.4.7 +RUN nvm use 4.4.7 +RUN npm install -g npm --loglevel error ADD . /atom WORKDIR /atom From e160c725fd2d24b23f18a358340b20df9a816352 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Thu, 14 Jul 2016 17:29:42 +0200 Subject: [PATCH 025/114] Use curl for rpm --- Dockerfile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 37339ccfd..15f8e2898 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,6 +4,8 @@ # Base docker image FROM fedora:21 +RUN curl --silent --location https://rpm.nodesource.com/setup_4.x | bash - + # Install dependencies RUN yum install -y \ make \ @@ -12,12 +14,10 @@ RUN yum install -y \ glibc-devel \ git-core \ libgnome-keyring-devel \ - rpmdevtools + rpmdevtools \ + nodejs \ + npm -RUN git clone https://github.com/creationix/nvm.git /tmp/.nvm -RUN source /tmp/.nvm/nvm.sh -RUN nvm install 4.4.7 -RUN nvm use 4.4.7 RUN npm install -g npm --loglevel error ADD . /atom From 4092ff1aea60c13c394f10ed30f594e307644c77 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Thu, 14 Jul 2016 17:47:45 +0200 Subject: [PATCH 026/114] Use another docker image for rpm --- Dockerfile | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index 15f8e2898..8f5483b33 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,9 +2,7 @@ # DESCRIPTION: Image to build Atom and create a .rpm file # Base docker image -FROM fedora:21 - -RUN curl --silent --location https://rpm.nodesource.com/setup_4.x | bash - +FROM nodesource/fedora21:4.4.7 # Install dependencies RUN yum install -y \ @@ -14,9 +12,7 @@ RUN yum install -y \ glibc-devel \ git-core \ libgnome-keyring-devel \ - rpmdevtools \ - nodejs \ - npm + rpmdevtools RUN npm install -g npm --loglevel error From 14b74937e12f436ea234c2508b4000ecc256fa7b Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Thu, 14 Jul 2016 17:50:59 +0200 Subject: [PATCH 027/114] Use 4.2.6 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 8f5483b33..22a101743 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ # DESCRIPTION: Image to build Atom and create a .rpm file # Base docker image -FROM nodesource/fedora21:4.4.7 +FROM nodesource/fedora21:4.2.6 # Install dependencies RUN yum install -y \ From b674169becad25067dfd80d55eb61100a4a6e8aa Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Thu, 14 Jul 2016 18:07:28 +0200 Subject: [PATCH 028/114] Remove previously installed nvm --- script/cibuild-atom-linux | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/script/cibuild-atom-linux b/script/cibuild-atom-linux index b04d73f62..fe79c19fe 100755 --- a/script/cibuild-atom-linux +++ b/script/cibuild-atom-linux @@ -7,8 +7,9 @@ export BUILD_ATOM_RELEASES_S3_KEY=$BUILD_ATOM_LINUX_RELEASES_S3_KEY export BUILD_ATOM_RELEASES_S3_SECRET=$BUILD_ATOM_LINUX_RELEASES_S3_SECRET export BUILD_ATOM_RELEASES_S3_BUCKET=$BUILD_ATOM_LINUX_RELEASES_S3_BUCKET -git clone https://github.com/creationix/nvm.git /tmp/.nvm -source /tmp/.nvm/nvm.sh +rm -rf /tmp/.atom-nvm +git clone https://github.com/creationix/nvm.git /tmp/.atom-nvm +source /tmp/.atom-nvm/nvm.sh nvm install 4.4.7 nvm use 4.4.7 npm install -g npm From 7a6b7fea062bda17f29789e4c9a7d76348b60a46 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Sat, 16 Jul 2016 20:01:54 +0200 Subject: [PATCH 029/114] :arrow_up: apm 1.12.0-beta0 --- apm/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apm/package.json b/apm/package.json index 3bf1fe769..d8896a2dc 100644 --- a/apm/package.json +++ b/apm/package.json @@ -6,6 +6,6 @@ "url": "https://github.com/atom/atom.git" }, "dependencies": { - "atom-package-manager": "1.11.4" + "atom-package-manager": "1.12.0-beta0" } } From e9623b30b8df945b2aa4913cb0e2a7c55585c0a2 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Sat, 16 Jul 2016 20:26:58 +0200 Subject: [PATCH 030/114] Include apm version in the fingerprint --- script/utils/fingerprint.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/script/utils/fingerprint.js b/script/utils/fingerprint.js index c419ba4fd..e1f6276d2 100644 --- a/script/utils/fingerprint.js +++ b/script/utils/fingerprint.js @@ -6,12 +6,14 @@ var fingerprintPath = path.resolve(__dirname, '..', '..', 'node_modules', '.atom module.exports = { fingerprint: function () { - var packageJson = fs.readFileSync(path.resolve(__dirname, '..', '..', 'package.json')) + var atomPackageJson = fs.readFileSync(path.resolve(__dirname, '..', '..', 'package.json')) + var apmPackageJson = fs.readFileSync(path.resolve(__dirname, '..', '..', 'apm', 'package.json')) //Include the electron minor version in the fingerprint since that changing requires a re-install - var electronVersion = JSON.parse(packageJson).electronVersion.replace(/\.\d+$/, '') + var electronVersion = JSON.parse(atomPackageJson).electronVersion.replace(/\.\d+$/, '') + var apmVersion = JSON.parse(apmPackageJson).dependencies['atom-package-manager'] - var body = electronVersion + process.platform + process.version + var body = electronVersion + apmVersion + process.platform + process.version return crypto.createHash('sha1').update(body).digest('hex') }, From 59a8c0544b1484f23464e3b03702eb9e712bcebd Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Sat, 16 Jul 2016 20:40:07 +0200 Subject: [PATCH 031/114] Set a higher timeout for Travis caching phase --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index e894731ea..ec039e2ee 100644 --- a/.travis.yml +++ b/.travis.yml @@ -33,6 +33,7 @@ install: script: script/cibuild cache: + timeout: 1000 directories: - node_modules - build/node_modules From 35bdaf34a127a80f0b8ae72b6553878fec5ff980 Mon Sep 17 00:00:00 2001 From: Wliu <50Wliu@users.noreply.github.com> Date: Sat, 16 Jul 2016 20:42:04 -0400 Subject: [PATCH 032/114] :arrow_up: timecop@0.33.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4083f8a83..76aff5505 100644 --- a/package.json +++ b/package.json @@ -114,7 +114,7 @@ "styleguide": "0.47.0", "symbols-view": "0.113.0", "tabs": "0.99.0", - "timecop": "0.33.1", + "timecop": "0.33.2", "tree-view": "0.208.1", "update-package-dependencies": "0.10.0", "welcome": "0.34.0", From 1610bcedb1faa4eb40973cace746590c1cb31084 Mon Sep 17 00:00:00 2001 From: Damien Guard Date: Sun, 17 Jul 2016 22:42:08 -0700 Subject: [PATCH 033/114] Ensure install & upgrade fix up previous shell paths --- src/main-process/squirrel-update.coffee | 32 ++++++++++++++----------- src/main-process/win-shell.coffee | 10 ++++---- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/src/main-process/squirrel-update.coffee b/src/main-process/squirrel-update.coffee index 5dfff6710..5d9910a19 100644 --- a/src/main-process/squirrel-update.coffee +++ b/src/main-process/squirrel-update.coffee @@ -125,31 +125,35 @@ exports.restartAtom = (app) -> app.once 'will-quit', -> Spawner.spawn(path.join(binFolder, 'atom.cmd'), args) app.quit() +updateContextMenus = (callback) -> + WinShell.fileContextMenu.update -> + WinShell.folderContextMenu.update -> + WinShell.folderBackgroundContextMenu.update -> + callback + # Handle squirrel events denoted by --squirrel-* command line arguments. exports.handleStartupEvent = (app, squirrelCommand) -> switch squirrelCommand when '--squirrel-install' createShortcuts -> - WinShell.fileHandler.register -> - addCommandsToPath -> - app.quit() + addCommandsToPath -> + WinShell.fileHandler.register -> + updateContextMenus -> + app.quit() true when '--squirrel-updated' updateShortcuts -> - WinShell.fileHandler.update -> - WinShell.fileContextMenu.update -> - WinShell.folderContextMenu.update -> - WinShell.folderBackgroundContextMenu.update -> - addCommandsToPath -> - app.quit() + addCommandsToPath -> + updateContextMenus -> + app.quit() true when '--squirrel-uninstall' removeShortcuts -> - WinShell.fileHandler.deregister -> - WinShell.fileContextMenu.deregister -> - WinShell.folderContextMenu.deregister -> - WinShell.folderBackgroundContextMenu.deregister -> - removeCommandsFromPath -> + removeCommandsFromPath -> + WinShell.fileHandler.deregister -> + WinShell.fileContextMenu.deregister -> + WinShell.folderContextMenu.deregister -> + WinShell.folderBackgroundContextMenu.deregister -> app.quit() true when '--squirrel-obsolete' diff --git a/src/main-process/win-shell.coffee b/src/main-process/win-shell.coffee index 5e1e1428a..269e9e97c 100644 --- a/src/main-process/win-shell.coffee +++ b/src/main-process/win-shell.coffee @@ -17,7 +17,7 @@ class ShellOption doneCount = @parts.length @parts.forEach((part) => reg = new Registry({hive: 'HKCU', key: if part.key? then "#{@key}\\#{part.key}" else @key}) - reg.create( -> reg.set part.name, Registry.REG_SZ, part.value, -> callback() if doneCount-- is 0)) + reg.create( -> reg.set part.name, Registry.REG_SZ, part.value, -> callback() if --doneCount is 0)) deregister: (callback) => @isRegistered (isRegistered) => if isRegistered @@ -26,11 +26,11 @@ class ShellOption callback null, false update: (callback) => new Registry({hive: 'HKCU', key: "#{@key}\\#{@parts[0].key}"}) - .get @parts[0].name, (err, val) -> - if err? or not val.value.endsWith '\\' + exeName - callback err, val + .get @parts[0].name, (err, val) => + if err? or not val.value.includes '\\' + exeName + callback(err) else - register callback + @register callback exports.appName = appName From eb7d695e60c75eab1a241521bb7da60ba2a22db6 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Mon, 18 Jul 2016 15:56:50 +0200 Subject: [PATCH 034/114] Don't run specs to avoid timing out the build ...this needs to be re-enabled on the next commit. --- build/Gruntfile.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Gruntfile.coffee b/build/Gruntfile.coffee index b248eda2e..41f22376f 100644 --- a/build/Gruntfile.coffee +++ b/build/Gruntfile.coffee @@ -288,7 +288,7 @@ module.exports = (grunt) -> ciTasks.push('set-version', 'check-licenses', 'lint', 'generate-asar') ciTasks.push('mkdeb') if process.platform is 'linux' ciTasks.push('mktar') if process.platform is 'linux' - ciTasks.push('test') if process.platform is 'darwin' + # ciTasks.push('test') if process.platform is 'darwin' ciTasks.push('codesign:app') if process.platform is 'darwin' and not process.env.CI if process.platform is 'win32' ciTasks.push('codesign:exe') if process.env.JANKY_SIGNTOOL From 7a22c5040335db8b6c92d315a39a3273ddb1816b Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Mon, 18 Jul 2016 16:51:09 +0200 Subject: [PATCH 035/114] Run tests --- build/Gruntfile.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Gruntfile.coffee b/build/Gruntfile.coffee index 41f22376f..b248eda2e 100644 --- a/build/Gruntfile.coffee +++ b/build/Gruntfile.coffee @@ -288,7 +288,7 @@ module.exports = (grunt) -> ciTasks.push('set-version', 'check-licenses', 'lint', 'generate-asar') ciTasks.push('mkdeb') if process.platform is 'linux' ciTasks.push('mktar') if process.platform is 'linux' - # ciTasks.push('test') if process.platform is 'darwin' + ciTasks.push('test') if process.platform is 'darwin' ciTasks.push('codesign:app') if process.platform is 'darwin' and not process.env.CI if process.platform is 'win32' ciTasks.push('codesign:exe') if process.env.JANKY_SIGNTOOL From 3b372e270ccdeabda4dfac68ffe1c9d95f189fdc Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Mon, 18 Jul 2016 17:48:45 +0200 Subject: [PATCH 036/114] Install npm 3 on Travis --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index ec039e2ee..13a74c608 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,6 +29,7 @@ install: - source /tmp/.nvm/nvm.sh - nvm install $NODE_VERSION - nvm use --delete-prefix $NODE_VERSION + - npm install -g npm script: script/cibuild From 23dfa392c9788ce4433bc4e1cfb19c55aa0de875 Mon Sep 17 00:00:00 2001 From: Damien Guard Date: Mon, 18 Jul 2016 22:56:02 -0700 Subject: [PATCH 037/114] Fix up Squirrel specs --- spec/squirrel-update-spec.coffee | 15 ++++++++++----- src/main-process/squirrel-update.coffee | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/spec/squirrel-update-spec.coffee b/spec/squirrel-update-spec.coffee index 51442abc6..2fe944e41 100644 --- a/spec/squirrel-update-spec.coffee +++ b/spec/squirrel-update-spec.coffee @@ -26,11 +26,16 @@ describe "Windows Squirrel Update", -> # do nothing on command, just run passed callback invokeCallback callback - # Prevent any actual change to Windows Shell - for own property of WinShell - for own method of property - spyOn(property, method).andCallFake (callback) -> - invokeCallback callback + # Prevent any actual change to Windows Shell + class FakeShellOption + isRegistered: (callback) -> callback true + register: (callback) -> callback null + deregister: (callback) -> callback null, true + update: (callback) -> callback null + WinShell.fileHandler = new FakeShellOption() + WinShell.fileContextMenu = new FakeShellOption() + WinShell.folderContextMenu = new FakeShellOption() + WinShell.folderBackgroundContextMenu = new FakeShellOption() it "quits the app on all squirrel events", -> app = quit: jasmine.createSpy('quit') diff --git a/src/main-process/squirrel-update.coffee b/src/main-process/squirrel-update.coffee index 5d9910a19..acac81457 100644 --- a/src/main-process/squirrel-update.coffee +++ b/src/main-process/squirrel-update.coffee @@ -129,7 +129,7 @@ updateContextMenus = (callback) -> WinShell.fileContextMenu.update -> WinShell.folderContextMenu.update -> WinShell.folderBackgroundContextMenu.update -> - callback + callback() # Handle squirrel events denoted by --squirrel-* command line arguments. exports.handleStartupEvent = (app, squirrelCommand) -> From 26f48001928f83b1fef598eaf68ae0479f25b4bc Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Tue, 19 Jul 2016 14:29:03 +0200 Subject: [PATCH 038/114] Try not caching node_modules --- .travis.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 13a74c608..31cc8016c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -36,10 +36,8 @@ script: script/cibuild cache: timeout: 1000 directories: - - node_modules - build/node_modules - apm/node_modules - - $HOME/.atom/compile-cache notifications: email: From 5c1a433e2ae40b2c5275a6aca04bb8aba67d243d Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Tue, 19 Jul 2016 14:56:27 +0200 Subject: [PATCH 039/114] Put back node_modules in the cache --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 31cc8016c..179abece8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,13 +29,13 @@ install: - source /tmp/.nvm/nvm.sh - nvm install $NODE_VERSION - nvm use --delete-prefix $NODE_VERSION - - npm install -g npm script: script/cibuild cache: timeout: 1000 directories: + - node_modules - build/node_modules - apm/node_modules From 25e8d3b1cf875c9bbe244755b8ccc96e14adcc52 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Tue, 19 Jul 2016 14:58:58 +0200 Subject: [PATCH 040/114] Add electron to the cache --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 179abece8..3bdd77f4e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -36,8 +36,9 @@ cache: timeout: 1000 directories: - node_modules - - build/node_modules - apm/node_modules + - build/node_modules + - electron notifications: email: From 207131836d769e75b7ba6e49b240cc51306952f6 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Tue, 19 Jul 2016 16:04:07 +0200 Subject: [PATCH 041/114] Cache also .atom/.node-gyp/.atom --- .travis.yml | 1 + build/Gruntfile.coffee | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 3bdd77f4e..27b6ad1f3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -35,6 +35,7 @@ script: script/cibuild cache: timeout: 1000 directories: + - $HOME/.atom/.node-gyp/.atom - node_modules - apm/node_modules - build/node_modules diff --git a/build/Gruntfile.coffee b/build/Gruntfile.coffee index b248eda2e..41f22376f 100644 --- a/build/Gruntfile.coffee +++ b/build/Gruntfile.coffee @@ -288,7 +288,7 @@ module.exports = (grunt) -> ciTasks.push('set-version', 'check-licenses', 'lint', 'generate-asar') ciTasks.push('mkdeb') if process.platform is 'linux' ciTasks.push('mktar') if process.platform is 'linux' - ciTasks.push('test') if process.platform is 'darwin' + # ciTasks.push('test') if process.platform is 'darwin' ciTasks.push('codesign:app') if process.platform is 'darwin' and not process.env.CI if process.platform is 'win32' ciTasks.push('codesign:exe') if process.env.JANKY_SIGNTOOL From 9b4f46cab102ca6345e7d31f5dcb85a022b09111 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Tue, 19 Jul 2016 16:56:26 +0200 Subject: [PATCH 042/114] Add back testing to Gruntfile --- build/Gruntfile.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Gruntfile.coffee b/build/Gruntfile.coffee index 41f22376f..b248eda2e 100644 --- a/build/Gruntfile.coffee +++ b/build/Gruntfile.coffee @@ -288,7 +288,7 @@ module.exports = (grunt) -> ciTasks.push('set-version', 'check-licenses', 'lint', 'generate-asar') ciTasks.push('mkdeb') if process.platform is 'linux' ciTasks.push('mktar') if process.platform is 'linux' - # ciTasks.push('test') if process.platform is 'darwin' + ciTasks.push('test') if process.platform is 'darwin' ciTasks.push('codesign:app') if process.platform is 'darwin' and not process.env.CI if process.platform is 'win32' ciTasks.push('codesign:exe') if process.env.JANKY_SIGNTOOL From 2fb0d68be8cae9aaed6370ebb3ac02250d0dee0f Mon Sep 17 00:00:00 2001 From: Damien Guard Date: Tue, 19 Jul 2016 16:33:29 -0700 Subject: [PATCH 043/114] Blank lines and for x in y syntax from review --- src/main-process/win-shell.coffee | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main-process/win-shell.coffee b/src/main-process/win-shell.coffee index 269e9e97c..39e9f4ed0 100644 --- a/src/main-process/win-shell.coffee +++ b/src/main-process/win-shell.coffee @@ -9,21 +9,25 @@ class ShellOption constructor: (key, parts) -> @key = key @parts = parts + isRegistered: (callback) => new Registry({hive: 'HKCU', key: "#{@key}\\#{@parts[0].key}"}) .get @parts[0].name, (err, val) => callback(not err? and val.value is @parts[0].value) + register: (callback) => doneCount = @parts.length - @parts.forEach((part) => + for part in @parts reg = new Registry({hive: 'HKCU', key: if part.key? then "#{@key}\\#{part.key}" else @key}) - reg.create( -> reg.set part.name, Registry.REG_SZ, part.value, -> callback() if --doneCount is 0)) + reg.create( -> reg.set part.name, Registry.REG_SZ, part.value, -> callback() if --doneCount is 0) + deregister: (callback) => @isRegistered (isRegistered) => if isRegistered new Registry({hive: 'HKCU', key: @key}).destroy -> callback null, true else callback null, false + update: (callback) => new Registry({hive: 'HKCU', key: "#{@key}\\#{@parts[0].key}"}) .get @parts[0].name, (err, val) => From b3d3b52d3de21397dd453f08fd0e07f1a9b4f6ba Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 20 Jul 2016 10:50:32 +0200 Subject: [PATCH 044/114] Disable specs (again) to allow caching --- build/Gruntfile.coffee | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/build/Gruntfile.coffee b/build/Gruntfile.coffee index b248eda2e..ad445a6ce 100644 --- a/build/Gruntfile.coffee +++ b/build/Gruntfile.coffee @@ -282,21 +282,21 @@ module.exports = (grunt) -> ciTasks.push('output-disk-space') unless process.env.CI ciTasks.push('download-electron') ciTasks.push('download-electron-chromedriver') - ciTasks.push('build') + # ciTasks.push('build') ciTasks.push('fingerprint') - ciTasks.push('dump-symbols') if process.platform is 'darwin' - ciTasks.push('set-version', 'check-licenses', 'lint', 'generate-asar') - ciTasks.push('mkdeb') if process.platform is 'linux' - ciTasks.push('mktar') if process.platform is 'linux' - ciTasks.push('test') if process.platform is 'darwin' - ciTasks.push('codesign:app') if process.platform is 'darwin' and not process.env.CI - if process.platform is 'win32' - ciTasks.push('codesign:exe') if process.env.JANKY_SIGNTOOL - ciTasks.push('codesign:installer-deferred') if not process.env.JANKY_SIGNTOOL - ciTasks.push('create-windows-installer:installer') - ciTasks.push('codesign:installer') if process.env.JANKY_SIGNTOOL - ciTasks.push('codesign:cleanup') - ciTasks.push('publish-build') unless process.env.CI + # ciTasks.push('dump-symbols') if process.platform is 'darwin' + # ciTasks.push('set-version', 'check-licenses', 'lint', 'generate-asar') + # ciTasks.push('mkdeb') if process.platform is 'linux' + # ciTasks.push('mktar') if process.platform is 'linux' + # ciTasks.push('test') if process.platform is 'darwin' + # ciTasks.push('codesign:app') if process.platform is 'darwin' and not process.env.CI + # if process.platform is 'win32' + # ciTasks.push('codesign:exe') if process.env.JANKY_SIGNTOOL + # ciTasks.push('codesign:installer-deferred') if not process.env.JANKY_SIGNTOOL + # ciTasks.push('create-windows-installer:installer') + # ciTasks.push('codesign:installer') if process.env.JANKY_SIGNTOOL + # ciTasks.push('codesign:cleanup') + # ciTasks.push('publish-build') unless process.env.CI grunt.registerTask('ci', ciTasks) From d2cb36e3a09a5ef7e6c0c8384b5ca3e28285af52 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 20 Jul 2016 12:26:02 +0200 Subject: [PATCH 045/114] :arrow_up: apm 1.12.1 --- .travis.yml | 1 - apm/package.json | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 27b6ad1f3..3bdd77f4e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -35,7 +35,6 @@ script: script/cibuild cache: timeout: 1000 directories: - - $HOME/.atom/.node-gyp/.atom - node_modules - apm/node_modules - build/node_modules diff --git a/apm/package.json b/apm/package.json index d8896a2dc..69aeaa413 100644 --- a/apm/package.json +++ b/apm/package.json @@ -6,6 +6,6 @@ "url": "https://github.com/atom/atom.git" }, "dependencies": { - "atom-package-manager": "1.12.0-beta0" + "atom-package-manager": "1.12.1" } } From be134ce3c95d54ddc2e60a40a88f340be924100f Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 20 Jul 2016 13:01:00 +0200 Subject: [PATCH 046/114] Revert "Disable specs (again) to allow caching" This reverts commit b3d3b52d3de21397dd453f08fd0e07f1a9b4f6ba. --- build/Gruntfile.coffee | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/build/Gruntfile.coffee b/build/Gruntfile.coffee index ad445a6ce..b248eda2e 100644 --- a/build/Gruntfile.coffee +++ b/build/Gruntfile.coffee @@ -282,21 +282,21 @@ module.exports = (grunt) -> ciTasks.push('output-disk-space') unless process.env.CI ciTasks.push('download-electron') ciTasks.push('download-electron-chromedriver') - # ciTasks.push('build') + ciTasks.push('build') ciTasks.push('fingerprint') - # ciTasks.push('dump-symbols') if process.platform is 'darwin' - # ciTasks.push('set-version', 'check-licenses', 'lint', 'generate-asar') - # ciTasks.push('mkdeb') if process.platform is 'linux' - # ciTasks.push('mktar') if process.platform is 'linux' - # ciTasks.push('test') if process.platform is 'darwin' - # ciTasks.push('codesign:app') if process.platform is 'darwin' and not process.env.CI - # if process.platform is 'win32' - # ciTasks.push('codesign:exe') if process.env.JANKY_SIGNTOOL - # ciTasks.push('codesign:installer-deferred') if not process.env.JANKY_SIGNTOOL - # ciTasks.push('create-windows-installer:installer') - # ciTasks.push('codesign:installer') if process.env.JANKY_SIGNTOOL - # ciTasks.push('codesign:cleanup') - # ciTasks.push('publish-build') unless process.env.CI + ciTasks.push('dump-symbols') if process.platform is 'darwin' + ciTasks.push('set-version', 'check-licenses', 'lint', 'generate-asar') + ciTasks.push('mkdeb') if process.platform is 'linux' + ciTasks.push('mktar') if process.platform is 'linux' + ciTasks.push('test') if process.platform is 'darwin' + ciTasks.push('codesign:app') if process.platform is 'darwin' and not process.env.CI + if process.platform is 'win32' + ciTasks.push('codesign:exe') if process.env.JANKY_SIGNTOOL + ciTasks.push('codesign:installer-deferred') if not process.env.JANKY_SIGNTOOL + ciTasks.push('create-windows-installer:installer') + ciTasks.push('codesign:installer') if process.env.JANKY_SIGNTOOL + ciTasks.push('codesign:cleanup') + ciTasks.push('publish-build') unless process.env.CI grunt.registerTask('ci', ciTasks) From 8d337789001b79b21a4857cfedfccc786a2e22e2 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 20 Jul 2016 13:02:43 +0200 Subject: [PATCH 047/114] Use npm 3.10.5 in build/package.json too --- build/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/package.json b/build/package.json index d0fd27fe1..533f49417 100644 --- a/build/package.json +++ b/build/package.json @@ -32,7 +32,7 @@ "grunt-standard": "^2.0.0", "legal-eagle": "~0.13.0", "minidump": "~0.9", - "npm": "3.9.5", + "npm": "3.10.5", "rcedit": "~0.3.0", "request": "~2.27.0", "rimraf": "~2.2.2", From 3664c8c2d7d9b9d54c8dc2fe4d9ef930e0a3f62c Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 20 Jul 2016 16:04:07 +0200 Subject: [PATCH 048/114] Don't cache electron --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 3bdd77f4e..9aa45d0eb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -38,7 +38,6 @@ cache: - node_modules - apm/node_modules - build/node_modules - - electron notifications: email: From 92483d7369eb2f25f09168f72aab6df9c5329206 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 20 Jul 2016 18:00:13 +0200 Subject: [PATCH 049/114] Remove the higher timeout --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 9aa45d0eb..b17253332 100644 --- a/.travis.yml +++ b/.travis.yml @@ -33,7 +33,6 @@ install: script: script/cibuild cache: - timeout: 1000 directories: - node_modules - apm/node_modules From 54279132cde8cf97318c941a95c0629eb7e2bc40 Mon Sep 17 00:00:00 2001 From: Wliu <50Wliu@users.noreply.github.com> Date: Wed, 20 Jul 2016 12:38:22 -0400 Subject: [PATCH 050/114] :arrow_up: whitespace@0.33.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0ab504e9a..3a9e3bd1e 100644 --- a/package.json +++ b/package.json @@ -119,7 +119,7 @@ "tree-view": "0.208.1", "update-package-dependencies": "0.10.0", "welcome": "0.34.0", - "whitespace": "0.32.2", + "whitespace": "0.33.0", "wrap-guide": "0.38.1", "language-c": "0.52.1", "language-clojure": "0.21.0", From 0648e4fce1010cbd6661c645a42cca2ccb214c1c Mon Sep 17 00:00:00 2001 From: Damien Guard Date: Wed, 20 Jul 2016 16:23:51 -0700 Subject: [PATCH 051/114] Run Crash Reporter on both UI & non-UI threads --- src/crash-reporter-start.coffee | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/crash-reporter-start.coffee b/src/crash-reporter-start.coffee index 37c381473..edd7bfd93 100644 --- a/src/crash-reporter-start.coffee +++ b/src/crash-reporter-start.coffee @@ -1,13 +1,9 @@ module.exports = (extra) -> - # Breakpad on Mac OS X must be running on UI and non-UI processes - # Crashpad on Windows and Linux should only be running on non-UI process - return if process.type is 'renderer' and process.platform isnt 'darwin' - {crashReporter} = require 'electron' crashReporter.start({ productName: 'Atom', companyName: 'GitHub', - submitURL: 'http://54.249.141.255:1127/post' + submitURL: 'http://localhost:1127/post' extra: extra }) From 7fa77bc01106fca725d5fbcbfb212db1c3e48b59 Mon Sep 17 00:00:00 2001 From: Damien Guard Date: Wed, 20 Jul 2016 16:26:56 -0700 Subject: [PATCH 052/114] Revert Crash Reporter URL endpoint back to correct one --- src/crash-reporter-start.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/crash-reporter-start.coffee b/src/crash-reporter-start.coffee index edd7bfd93..af371df79 100644 --- a/src/crash-reporter-start.coffee +++ b/src/crash-reporter-start.coffee @@ -4,6 +4,6 @@ module.exports = (extra) -> crashReporter.start({ productName: 'Atom', companyName: 'GitHub', - submitURL: 'http://localhost:1127/post' + submitURL: 'http://54.249.141.255:1127/post' extra: extra }) From bdda0c0877c395874791d92229854913137e61e4 Mon Sep 17 00:00:00 2001 From: Wliu <50Wliu@users.noreply.github.com> Date: Wed, 20 Jul 2016 20:38:53 -0400 Subject: [PATCH 053/114] :arrow_up: language-git@0.15.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3a9e3bd1e..410f87759 100644 --- a/package.json +++ b/package.json @@ -127,7 +127,7 @@ "language-csharp": "0.12.1", "language-css": "0.37.0", "language-gfm": "0.88.0", - "language-git": "0.14.0", + "language-git": "0.15.0", "language-go": "0.42.0", "language-html": "0.44.1", "language-hyperlink": "0.16.0", From 9d2c8d4271f2bd470466860963113bb0f6c68c9d Mon Sep 17 00:00:00 2001 From: Wliu <50Wliu@users.noreply.github.com> Date: Wed, 20 Jul 2016 20:40:30 -0400 Subject: [PATCH 054/114] :arrow_up: language-ruby@0.69.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 410f87759..9495b028f 100644 --- a/package.json +++ b/package.json @@ -142,7 +142,7 @@ "language-php": "0.37.1", "language-property-list": "0.8.0", "language-python": "0.45.0", - "language-ruby": "0.68.6", + "language-ruby": "0.69.0", "language-ruby-on-rails": "0.25.0", "language-sass": "0.55.0", "language-shellscript": "0.22.4", From ed06e9536993178d95f2a36489ac44c16b646d84 Mon Sep 17 00:00:00 2001 From: Wliu <50Wliu@users.noreply.github.com> Date: Wed, 20 Jul 2016 20:42:35 -0400 Subject: [PATCH 055/114] :arrow_up: language-html@0.45.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9495b028f..e348b99b8 100644 --- a/package.json +++ b/package.json @@ -129,7 +129,7 @@ "language-gfm": "0.88.0", "language-git": "0.15.0", "language-go": "0.42.0", - "language-html": "0.44.1", + "language-html": "0.45.0", "language-hyperlink": "0.16.0", "language-java": "0.23.0", "language-javascript": "0.119.0", From 650608536c3543d2bb0f89691fd78e58bdb03bc0 Mon Sep 17 00:00:00 2001 From: Wliu <50Wliu@users.noreply.github.com> Date: Wed, 20 Jul 2016 20:44:35 -0400 Subject: [PATCH 056/114] :arrow_up: language-php@0.37.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e348b99b8..07d6282d0 100644 --- a/package.json +++ b/package.json @@ -139,7 +139,7 @@ "language-mustache": "0.13.0", "language-objective-c": "0.15.1", "language-perl": "0.35.0", - "language-php": "0.37.1", + "language-php": "0.37.2", "language-property-list": "0.8.0", "language-python": "0.45.0", "language-ruby": "0.69.0", From 2da9111bbd692b7ddeae8e0012afa472a4cbaa15 Mon Sep 17 00:00:00 2001 From: Wliu <50Wliu@users.noreply.github.com> Date: Wed, 20 Jul 2016 20:45:33 -0400 Subject: [PATCH 057/114] :arrow_up: language-sql@0.23.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 07d6282d0..3d6f4db58 100644 --- a/package.json +++ b/package.json @@ -147,7 +147,7 @@ "language-sass": "0.55.0", "language-shellscript": "0.22.4", "language-source": "0.9.0", - "language-sql": "0.22.0", + "language-sql": "0.23.0", "language-text": "0.7.1", "language-todo": "0.28.0", "language-toml": "0.18.0", From e3ada042a9abc11692ed72a2c5739384af450669 Mon Sep 17 00:00:00 2001 From: Wliu <50Wliu@users.noreply.github.com> Date: Wed, 20 Jul 2016 20:46:19 -0400 Subject: [PATCH 058/114] :arrow_up: language-coffee-script@0.47.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3d6f4db58..637a56b9f 100644 --- a/package.json +++ b/package.json @@ -123,7 +123,7 @@ "wrap-guide": "0.38.1", "language-c": "0.52.1", "language-clojure": "0.21.0", - "language-coffee-script": "0.47.1", + "language-coffee-script": "0.47.2", "language-csharp": "0.12.1", "language-css": "0.37.0", "language-gfm": "0.88.0", From 28ee230c7b3af0f74e8182783c09c1e887f6dfa3 Mon Sep 17 00:00:00 2001 From: Wliu <50Wliu@users.noreply.github.com> Date: Wed, 20 Jul 2016 20:47:10 -0400 Subject: [PATCH 059/114] :arrow_up: language-json@0.18.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 637a56b9f..650bcccec 100644 --- a/package.json +++ b/package.json @@ -133,7 +133,7 @@ "language-hyperlink": "0.16.0", "language-java": "0.23.0", "language-javascript": "0.119.0", - "language-json": "0.18.1", + "language-json": "0.18.2", "language-less": "0.29.4", "language-make": "0.22.2", "language-mustache": "0.13.0", From cad3553115e4c48f076767b003b3e0063c52623c Mon Sep 17 00:00:00 2001 From: Wliu <50Wliu@users.noreply.github.com> Date: Wed, 20 Jul 2016 20:48:19 -0400 Subject: [PATCH 060/114] :arrow_up: language-xml@0.34.9 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 650bcccec..0eb88679b 100644 --- a/package.json +++ b/package.json @@ -151,7 +151,7 @@ "language-text": "0.7.1", "language-todo": "0.28.0", "language-toml": "0.18.0", - "language-xml": "0.34.8", + "language-xml": "0.34.9", "language-yaml": "0.26.0" }, "private": true, From eeb3aafe4d761c395cb605ccd1e259583d5578ba Mon Sep 17 00:00:00 2001 From: Wliu <50Wliu@users.noreply.github.com> Date: Wed, 20 Jul 2016 20:49:01 -0400 Subject: [PATCH 061/114] :arrow_up: language-sass@0.56.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0eb88679b..7d3426069 100644 --- a/package.json +++ b/package.json @@ -144,7 +144,7 @@ "language-python": "0.45.0", "language-ruby": "0.69.0", "language-ruby-on-rails": "0.25.0", - "language-sass": "0.55.0", + "language-sass": "0.56.0", "language-shellscript": "0.22.4", "language-source": "0.9.0", "language-sql": "0.23.0", From dbc8e99274300f26b9af5f6c16c4bdb5b41f6e29 Mon Sep 17 00:00:00 2001 From: Wliu <50Wliu@users.noreply.github.com> Date: Wed, 20 Jul 2016 20:49:54 -0400 Subject: [PATCH 062/114] :arrow_up: language-go@0.42.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7d3426069..53ebb989b 100644 --- a/package.json +++ b/package.json @@ -128,7 +128,7 @@ "language-css": "0.37.0", "language-gfm": "0.88.0", "language-git": "0.15.0", - "language-go": "0.42.0", + "language-go": "0.42.1", "language-html": "0.45.0", "language-hyperlink": "0.16.0", "language-java": "0.23.0", From b6759863e0f21c23b6efa63c9c26ac9c45e6ba5e Mon Sep 17 00:00:00 2001 From: Wliu <50Wliu@users.noreply.github.com> Date: Wed, 20 Jul 2016 20:50:44 -0400 Subject: [PATCH 063/114] :arrow_up: language-css@0.37.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 53ebb989b..b2c27ea54 100644 --- a/package.json +++ b/package.json @@ -125,7 +125,7 @@ "language-clojure": "0.21.0", "language-coffee-script": "0.47.2", "language-csharp": "0.12.1", - "language-css": "0.37.0", + "language-css": "0.37.1", "language-gfm": "0.88.0", "language-git": "0.15.0", "language-go": "0.42.1", From 565fe1e8c97603b8556802fbe539bd707ea9908d Mon Sep 17 00:00:00 2001 From: Wliu <50Wliu@users.noreply.github.com> Date: Wed, 20 Jul 2016 20:52:06 -0400 Subject: [PATCH 064/114] :arrow_up: language-less@0.29.5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b2c27ea54..a5af57bb6 100644 --- a/package.json +++ b/package.json @@ -134,7 +134,7 @@ "language-java": "0.23.0", "language-javascript": "0.119.0", "language-json": "0.18.2", - "language-less": "0.29.4", + "language-less": "0.29.5", "language-make": "0.22.2", "language-mustache": "0.13.0", "language-objective-c": "0.15.1", From df08b73f56d34bf64996d7ae04b490885795da3d Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Thu, 21 Jul 2016 12:33:19 +0200 Subject: [PATCH 065/114] :arrow_up: tabs --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3a9e3bd1e..0c037cb2d 100644 --- a/package.json +++ b/package.json @@ -114,7 +114,7 @@ "status-bar": "1.4.0", "styleguide": "0.47.0", "symbols-view": "0.113.0", - "tabs": "0.99.0", + "tabs": "0.100.0", "timecop": "0.33.2", "tree-view": "0.208.1", "update-package-dependencies": "0.10.0", From e64fe45cfcd05bccb5f14b45af769ce4d19f1b53 Mon Sep 17 00:00:00 2001 From: Indrek Ardel Date: Thu, 21 Jul 2016 14:49:16 +0300 Subject: [PATCH 066/114] Correctly link the safe mode section --- ISSUE_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md index 5b3ea42f4..d2ac45f05 100644 --- a/ISSUE_TEMPLATE.md +++ b/ISSUE_TEMPLATE.md @@ -1,6 +1,6 @@ ### Prerequisites -* [ ] Can you reproduce the problem in [safe mode](http://flight-manual.atom.io/hacking-atom/sections/debugging/#check-if-the-problem-shows-up-in-safe-mode)? +* [ ] Can you reproduce the problem in [safe mode](http://flight-manual.atom.io/hacking-atom/sections/debugging/#using-safe-mode)? * [ ] Are you running the [latest version of Atom](http://flight-manual.atom.io/hacking-atom/sections/debugging/#update-to-the-latest-version)? * [ ] Did you check the [debugging guide](http://flight-manual.atom.io/hacking-atom/sections/debugging/)? * [ ] Did you check the [FAQs on Discuss](https://discuss.atom.io/c/faq)? From e2c7f0dab3360cec4862f4eaef3ed6c6314ddaac Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Thu, 21 Jul 2016 13:58:33 +0200 Subject: [PATCH 067/114] :arrow_up: apm 1.12.2 --- apm/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apm/package.json b/apm/package.json index 69aeaa413..3a986dffc 100644 --- a/apm/package.json +++ b/apm/package.json @@ -6,6 +6,6 @@ "url": "https://github.com/atom/atom.git" }, "dependencies": { - "atom-package-manager": "1.12.1" + "atom-package-manager": "1.12.2" } } From 726cc4c077dd1a5915ebe8eef945b1482c68ee02 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Thu, 21 Jul 2016 13:42:26 -0600 Subject: [PATCH 068/114] Rename ATOM_REPO to ATOM_PUBLISH_REPO and always publish when it is set --- build/Gruntfile.coffee | 4 +++- build/tasks/publish-build-task.coffee | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/build/Gruntfile.coffee b/build/Gruntfile.coffee index b248eda2e..653e1e268 100644 --- a/build/Gruntfile.coffee +++ b/build/Gruntfile.coffee @@ -296,7 +296,9 @@ module.exports = (grunt) -> ciTasks.push('create-windows-installer:installer') ciTasks.push('codesign:installer') if process.env.JANKY_SIGNTOOL ciTasks.push('codesign:cleanup') - ciTasks.push('publish-build') unless process.env.CI + + if process.env.ATOM_PUBLISH_REPO or not process.env.CI + ciTasks.push('publish-build') grunt.registerTask('ci', ciTasks) diff --git a/build/tasks/publish-build-task.coffee b/build/tasks/publish-build-task.coffee index 2802f827d..27f36aaeb 100644 --- a/build/tasks/publish-build-task.coffee +++ b/build/tasks/publish-build-task.coffee @@ -11,7 +11,7 @@ AWS = require 'aws-sdk' grunt = null token = process.env.ATOM_ACCESS_TOKEN -repo = process.env.ATOM_REPO ? 'atom/atom' +repo = process.env.ATOM_PUBLISH_REPO ? 'atom/atom' defaultHeaders = Authorization: "token #{token}" 'User-Agent': 'Atom' From a3b99c51a5d4d9b7e7d79332d1e7a6bc52a1ff25 Mon Sep 17 00:00:00 2001 From: simurai Date: Fri, 22 Jul 2016 21:02:26 +0900 Subject: [PATCH 069/114] :arrow_up: one-light-ui@v1.5.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0580923af..246560d42 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "base16-tomorrow-dark-theme": "1.1.0", "base16-tomorrow-light-theme": "1.1.1", "one-dark-ui": "1.4.0", - "one-light-ui": "1.4.0", + "one-light-ui": "1.5.0", "one-dark-syntax": "1.3.0", "one-light-syntax": "1.3.0", "solarized-dark-syntax": "1.0.2", From e92e2c061d8b33f7eb522da427e0425b24b37391 Mon Sep 17 00:00:00 2001 From: simurai Date: Fri, 22 Jul 2016 21:03:11 +0900 Subject: [PATCH 070/114] :arrow_up: one-dark-ui@v1.5.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 246560d42..717c0e00d 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "atom-light-ui": "0.44.0", "base16-tomorrow-dark-theme": "1.1.0", "base16-tomorrow-light-theme": "1.1.1", - "one-dark-ui": "1.4.0", + "one-dark-ui": "1.5.0", "one-light-ui": "1.5.0", "one-dark-syntax": "1.3.0", "one-light-syntax": "1.3.0", From 18271ec8cc601b6abcf5d7efdbd34680ba955d22 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Fri, 22 Jul 2016 18:04:05 +0200 Subject: [PATCH 071/114] :arrow_up: apm 1.12.3 --- apm/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apm/package.json b/apm/package.json index 3a986dffc..18f313c16 100644 --- a/apm/package.json +++ b/apm/package.json @@ -6,6 +6,6 @@ "url": "https://github.com/atom/atom.git" }, "dependencies": { - "atom-package-manager": "1.12.2" + "atom-package-manager": "1.12.3" } } From 2a369aa5673ea346f52a776253a4e80cf731d767 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Thu, 21 Jul 2016 17:13:18 -0600 Subject: [PATCH 072/114] =?UTF-8?q?Don=E2=80=99t=20clobber=20S3=20creds=20?= =?UTF-8?q?on=20Windows?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/cibuild | 4 ---- 1 file changed, 4 deletions(-) diff --git a/script/cibuild b/script/cibuild index 627c2291a..6f16ac5cd 100755 --- a/script/cibuild +++ b/script/cibuild @@ -40,10 +40,6 @@ function setEnvironmentVariables() { process.env.CC = 'clang'; process.env.CXX = 'clang++'; process.env.npm_config_clang = '1'; - } else if (process.platform === 'win32') { - process.env.BUILD_ATOM_RELEASES_S3_KEY = process.env.BUILD_ATOM_WIN_RELEASES_S3_KEY - process.env.BUILD_ATOM_RELEASES_S3_SECRET = process.env.BUILD_ATOM_WIN_RELEASES_S3_SECRET - process.env.BUILD_ATOM_RELEASES_S3_BUCKET = process.env.BUILD_ATOM_WIN_RELEASES_S3_BUCKET } } From f7a4b8f33f931ab10909a2429c9a0876b637e11f Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Thu, 21 Jul 2016 17:16:58 -0600 Subject: [PATCH 073/114] Build more than master on appveyor --- appveyor.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 51e074a4c..56335e8bd 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,9 +1,5 @@ version: "{build}" -branches: - only: - - master - skip_tags: true clone_folder: c:\projects\atom clone_depth: 10 From c65d45ea62426a63927913a92bb811542ba39e23 Mon Sep 17 00:00:00 2001 From: Damien Guard Date: Thu, 21 Jul 2016 16:59:49 -0700 Subject: [PATCH 074/114] Add logging to publish-build-task --- build/tasks/publish-build-task.coffee | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/build/tasks/publish-build-task.coffee b/build/tasks/publish-build-task.coffee index 27f36aaeb..1d5322d61 100644 --- a/build/tasks/publish-build-task.coffee +++ b/build/tasks/publish-build-task.coffee @@ -119,6 +119,7 @@ logError = (message, error, details) -> zipAssets = (buildDir, assets, callback) -> zip = (directory, sourcePath, assetName, callback) -> + grunt.log.ok("Zipping #{sourcePath} into #{assetName}") if process.platform is 'win32' sevenZipPath = if process.env.JANKY_SHA1? then "C:/psmodules/" else "" zipCommand = "#{sevenZipPath}7z.exe a -r \"#{assetName}\" \"#{sourcePath}\"" @@ -136,6 +137,7 @@ zipAssets = (buildDir, assets, callback) -> async.parallel(tasks, callback) getAtomDraftRelease = (isPrerelease, branchName, callback) -> + grunt.log.ok("Obtaining GitHub draft release for #{branchName}") atomRepo = new GitHub({repo: repo, token}) atomRepo.getReleases {prerelease: isPrerelease}, (error, releases=[]) -> if error? @@ -154,12 +156,14 @@ getAtomDraftRelease = (isPrerelease, branchName, callback) -> logError('Fetching draft release assets failed', error, assets) callback(error ? new Error(response.statusCode)) else + grunt.log.ok("Using GitHub draft release #{firstDraft.name}") firstDraft.assets = assets callback(null, firstDraft) else createAtomDraftRelease(isPrerelease, branchName, callback) createAtomDraftRelease = (isPrerelease, branchName, callback) -> + grunt.log.ok("Creating GitHub draft release #{branchName}") {version} = require('../../package.json') options = uri: "https://api.github.com/repos/#{repo}/releases" @@ -185,6 +189,7 @@ createAtomDraftRelease = (isPrerelease, branchName, callback) -> callback(null, body) deleteRelease = (release) -> + grunt.log.ok("Deleting GitHub release #{release}") options = uri: release.url method: 'DELETE' @@ -195,6 +200,7 @@ deleteRelease = (release) -> logError('Deleting release failed', error, body) deleteExistingAssets = (release, assetNames, callback) -> + grunt.log.ok("Deleting #{assetNames.join(',')} from GitHub release #{release}") [callback, assetNames] = [assetNames, callback] if not callback? deleteAsset = (url, callback) -> @@ -216,6 +222,7 @@ deleteExistingAssets = (release, assetNames, callback) -> uploadAssets = (release, buildDir, assets, callback) -> uploadToReleases = (release, assetName, assetPath, callback) -> + grunt.log.ok("Uploading #{assetName} to GitHub release #{release}") options = uri: release.upload_url.replace(/\{.*$/, "?name=#{assetName}") method: 'POST' @@ -248,6 +255,7 @@ uploadAssets = (release, buildDir, assets, callback) -> s3 = new AWS.S3 s3Info key = "releases/#{release.tag_name}/#{assetName}" + grunt.log.ok("Uploading to S3 #{key}") uploadParams = Bucket: s3Bucket ACL: 'public-read' From e60b5f8542f1cc55040cd122518ed2810d5993bf Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Fri, 22 Jul 2016 09:53:58 -0600 Subject: [PATCH 075/114] Cache node_modules on AppVeyor Signed-off-by: Antonio Scandurra --- appveyor.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/appveyor.yml b/appveyor.yml index 56335e8bd..6248db85e 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -33,6 +33,9 @@ artifacts: name: AtomSetup.msi cache: + - '%APPVEYOR_BUILD_FOLDER%\build\node_modules' + - '%APPVEYOR_BUILD_FOLDER%\apm\node_modules' + - '%APPVEYOR_BUILD_FOLDER%\node_modules' - '%USERPROFILE%\.atom\.apm' - '%USERPROFILE%\.atom\.node-gyp\.atom' - '%USERPROFILE%\.atom\.npm' From 6afb4da0cf0efe9814418e0e5bbbf65d797d2a14 Mon Sep 17 00:00:00 2001 From: Damien Guard Date: Fri, 22 Jul 2016 09:32:41 -0700 Subject: [PATCH 076/114] Add repo logging to publish task --- build/tasks/publish-build-task.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/build/tasks/publish-build-task.coffee b/build/tasks/publish-build-task.coffee index 1d5322d61..e4b372b36 100644 --- a/build/tasks/publish-build-task.coffee +++ b/build/tasks/publish-build-task.coffee @@ -32,6 +32,7 @@ module.exports = (gruntObject) -> cp path.join(docsOutputDir, 'api.json'), path.join(buildDir, 'atom-api.json') grunt.registerTask 'upload-assets', 'Upload the assets to a GitHub release', -> + grunt.log.ok("Starting upload-assets to #{repo} repo") releaseBranch = grunt.config.get('atom.releaseBranch') isPrerelease = grunt.config.get('atom.channel') is 'beta' return unless releaseBranch? From 24feb64a52b0e32cd5e220ca480f6e34be590cfd Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Fri, 22 Jul 2016 16:01:07 -0600 Subject: [PATCH 077/114] Log release.tag_name correctly --- build/tasks/publish-build-task.coffee | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build/tasks/publish-build-task.coffee b/build/tasks/publish-build-task.coffee index e4b372b36..1cc90eae4 100644 --- a/build/tasks/publish-build-task.coffee +++ b/build/tasks/publish-build-task.coffee @@ -190,7 +190,7 @@ createAtomDraftRelease = (isPrerelease, branchName, callback) -> callback(null, body) deleteRelease = (release) -> - grunt.log.ok("Deleting GitHub release #{release}") + grunt.log.ok("Deleting GitHub release #{release.tag_name}") options = uri: release.url method: 'DELETE' @@ -201,7 +201,7 @@ deleteRelease = (release) -> logError('Deleting release failed', error, body) deleteExistingAssets = (release, assetNames, callback) -> - grunt.log.ok("Deleting #{assetNames.join(',')} from GitHub release #{release}") + grunt.log.ok("Deleting #{assetNames.join(',')} from GitHub release #{release.tag_name}") [callback, assetNames] = [assetNames, callback] if not callback? deleteAsset = (url, callback) -> @@ -223,7 +223,7 @@ deleteExistingAssets = (release, assetNames, callback) -> uploadAssets = (release, buildDir, assets, callback) -> uploadToReleases = (release, assetName, assetPath, callback) -> - grunt.log.ok("Uploading #{assetName} to GitHub release #{release}") + grunt.log.ok("Uploading #{assetName} to GitHub release #{release.tag_name}") options = uri: release.upload_url.replace(/\{.*$/, "?name=#{assetName}") method: 'POST' From 1c3bd102cac22910992ff3da8e5a958734838166 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Fri, 22 Jul 2016 16:04:53 -0600 Subject: [PATCH 078/114] Clarify logging when upload-assets is skipped on non-release branches --- build/tasks/publish-build-task.coffee | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/build/tasks/publish-build-task.coffee b/build/tasks/publish-build-task.coffee index 1cc90eae4..ad31c0d8e 100644 --- a/build/tasks/publish-build-task.coffee +++ b/build/tasks/publish-build-task.coffee @@ -32,10 +32,14 @@ module.exports = (gruntObject) -> cp path.join(docsOutputDir, 'api.json'), path.join(buildDir, 'atom-api.json') grunt.registerTask 'upload-assets', 'Upload the assets to a GitHub release', -> - grunt.log.ok("Starting upload-assets to #{repo} repo") releaseBranch = grunt.config.get('atom.releaseBranch') isPrerelease = grunt.config.get('atom.channel') is 'beta' - return unless releaseBranch? + + unless releaseBranch? + grunt.log.ok("Skipping upload-assets to #{repo} repo because this is not a release branch") + return + + grunt.log.ok("Starting upload-assets to #{repo} repo") doneCallback = @async() startTime = Date.now() From 71e7d3291649387a32d421dbfbdbaf76af838b76 Mon Sep 17 00:00:00 2001 From: Yuya Tanaka Date: Mon, 25 Jul 2016 07:49:04 +0900 Subject: [PATCH 079/114] :racehorse: Transact setSchema config changes --- src/config.coffee | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/config.coffee b/src/config.coffee index 27ea1edef..c334cc1ec 100644 --- a/src/config.coffee +++ b/src/config.coffee @@ -786,9 +786,10 @@ class Config rootSchema = properties[key] Object.assign rootSchema, schema - @setDefaults(keyPath, @extractDefaultsFromSchema(schema)) - @setScopedDefaultsFromSchema(keyPath, schema) - @resetSettingsForSchemaChange() + @transact => + @setDefaults(keyPath, @extractDefaultsFromSchema(schema)) + @setScopedDefaultsFromSchema(keyPath, schema) + @resetSettingsForSchemaChange() load: -> @initializeConfigDirectory() From b66d1acb025d180fdc75bba6c15719fd0183b2c0 Mon Sep 17 00:00:00 2001 From: Yuya Tanaka Date: Mon, 25 Jul 2016 07:51:11 +0900 Subject: [PATCH 080/114] :racehorse: Skip require from settings view if configSchema --- src/package.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/src/package.coffee b/src/package.coffee index b27e3ce0e..1bb8a939c 100644 --- a/src/package.coffee +++ b/src/package.coffee @@ -159,6 +159,7 @@ class Package # TODO: Remove. Settings view calls this method currently. activateConfig: -> + return if @configSchemaRegisteredOnLoad @requireMainModule() @registerConfigSchemaFromMainModule() From 9199b7ffa99d442c8b0729f0dc1724fdc26ddfea Mon Sep 17 00:00:00 2001 From: Damien Guard Date: Mon, 25 Jul 2016 09:22:25 -0700 Subject: [PATCH 081/114] Disable autosubmit of crash reporter --- src/crash-reporter-start.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/crash-reporter-start.coffee b/src/crash-reporter-start.coffee index af371df79..f19e61179 100644 --- a/src/crash-reporter-start.coffee +++ b/src/crash-reporter-start.coffee @@ -4,6 +4,6 @@ module.exports = (extra) -> crashReporter.start({ productName: 'Atom', companyName: 'GitHub', - submitURL: 'http://54.249.141.255:1127/post' + autoSubmit: false, extra: extra }) From 3589d6173ff4115ccba92428f175fe39dc2d8ddd Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 20 Jul 2016 18:22:24 +0200 Subject: [PATCH 082/114] Start on Circle CI --- circle.yml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/circle.yml b/circle.yml index a55900cca..d43f769c6 100644 --- a/circle.yml +++ b/circle.yml @@ -1,4 +1,16 @@ +machine: + node: + version: 4.4.7 + general: branches: only: - - io-circle-ci + - as-circle-ci + +dependencies: + override: + - script/bootstrap + +test: + override: + - script/grunt ci From d2d9ddacd86142ad9ed7be134793dbf8e657599e Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 20 Jul 2016 18:26:13 +0200 Subject: [PATCH 083/114] Use the latest Xcode --- circle.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/circle.yml b/circle.yml index d43f769c6..2b7f64496 100644 --- a/circle.yml +++ b/circle.yml @@ -1,4 +1,7 @@ machine: + xcode: + version: 7.3 + node: version: 4.4.7 From 0fa6119df8e821c35933e8a5eff0946c656c5be6 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 20 Jul 2016 18:28:36 +0200 Subject: [PATCH 084/114] Try skipping xcode_scheme --- circle.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/circle.yml b/circle.yml index 2b7f64496..c8ff35153 100644 --- a/circle.yml +++ b/circle.yml @@ -1,4 +1,7 @@ machine: + environment: + XCODE_SCHEME: test + xcode: version: 7.3 From 4f64abc0898eec0d3fbba40c8f5199adaaad74d4 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 20 Jul 2016 18:37:29 +0200 Subject: [PATCH 085/114] Test --- circle.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/circle.yml b/circle.yml index c8ff35153..1570fbfd2 100644 --- a/circle.yml +++ b/circle.yml @@ -1,6 +1,7 @@ machine: environment: XCODE_SCHEME: test + XCODE_WORKSPACE: test xcode: version: 7.3 From e8d25250cc8f7ccaf52fb18ede77b915176ddf13 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 20 Jul 2016 18:39:43 +0200 Subject: [PATCH 086/114] Another test --- circle.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/circle.yml b/circle.yml index 1570fbfd2..381b81241 100644 --- a/circle.yml +++ b/circle.yml @@ -2,6 +2,7 @@ machine: environment: XCODE_SCHEME: test XCODE_WORKSPACE: test + XCODE_PROJECT: test xcode: version: 7.3 From 9204238c243830143cb36144af3c25d992e83b35 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 20 Jul 2016 18:41:21 +0200 Subject: [PATCH 087/114] Install node via nvm --- circle.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/circle.yml b/circle.yml index 381b81241..e30bd9db7 100644 --- a/circle.yml +++ b/circle.yml @@ -7,15 +7,17 @@ machine: xcode: version: 7.3 - node: - version: 4.4.7 - general: branches: only: - as-circle-ci dependencies: + pre: + - curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.3/install.sh | bash + - nvm install 4.4.7 + - nvm use 4.4.7 + override: - script/bootstrap From 77f8811b187855c15e87fbc55137332a95ab6a92 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 20 Jul 2016 18:43:15 +0200 Subject: [PATCH 088/114] Upgrade npm before running script/bootstrap --- circle.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/circle.yml b/circle.yml index e30bd9db7..40cf6c478 100644 --- a/circle.yml +++ b/circle.yml @@ -17,6 +17,7 @@ dependencies: - curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.3/install.sh | bash - nvm install 4.4.7 - nvm use 4.4.7 + - npm install -g npm override: - script/bootstrap From 1e00a9ad2736721d8663ff963916cba37154ca2d Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 20 Jul 2016 19:07:06 +0200 Subject: [PATCH 089/114] Cache node_modules on CircleCI --- circle.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/circle.yml b/circle.yml index 40cf6c478..28225cd11 100644 --- a/circle.yml +++ b/circle.yml @@ -22,6 +22,12 @@ dependencies: override: - script/bootstrap + cache_directories: + - apm/node_modules + - build/node_modules + - node_modules + - electron + test: override: - script/grunt ci From ea969d71ec1d479d1d7fd5be52dbb0236d789113 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 20 Jul 2016 19:33:34 +0200 Subject: [PATCH 090/114] Use fingerprint to invalidate cache --- circle.yml | 4 ++++ script/fingerprint-clean | 23 +++++++++++++++++++++++ script/fingerprint-write | 2 ++ 3 files changed, 29 insertions(+) create mode 100755 script/fingerprint-clean create mode 100755 script/fingerprint-write diff --git a/circle.yml b/circle.yml index 28225cd11..3f3b86c07 100644 --- a/circle.yml +++ b/circle.yml @@ -18,10 +18,14 @@ dependencies: - nvm install 4.4.7 - nvm use 4.4.7 - npm install -g npm + - script/fingerprint-clean override: - script/bootstrap + post: + - script/fingerprint-write + cache_directories: - apm/node_modules - build/node_modules diff --git a/script/fingerprint-clean b/script/fingerprint-clean new file mode 100755 index 000000000..6c2a67ca0 --- /dev/null +++ b/script/fingerprint-clean @@ -0,0 +1,23 @@ +#!/usr/bin/env node +var fingerprint = require('./utils/fingerprint') + +if (fingerprint.fingerprintMatches()) { + console.log('node_modules matches current fingerprint ' + fingerprint.fingerprint() + ' - not removing') + return +} + +var fsPlus +try { + fsPlus = require('fs-plus') +} catch (error) { + console.log(error.message) + return +} + +try { + fsPlus.removeSync(path.resolve(__dirname, '..', 'node_modules')) + fsPlus.removeSync(path.resolve(__dirname, '..', 'apm', 'node_modules')) +} catch (error) { + console.error(error.message) + process.exit(1) +} diff --git a/script/fingerprint-write b/script/fingerprint-write new file mode 100755 index 000000000..e5fad4d72 --- /dev/null +++ b/script/fingerprint-write @@ -0,0 +1,2 @@ +#!/usr/bin/env node +require('./utils/fingerprint').writeFingerprint() From 8c4b836558e3f239a48d30d536d9f761e5a30928 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 20 Jul 2016 20:28:33 +0200 Subject: [PATCH 091/114] :fire: Remove Electron from cache --- circle.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/circle.yml b/circle.yml index 3f3b86c07..a5efd757f 100644 --- a/circle.yml +++ b/circle.yml @@ -30,7 +30,6 @@ dependencies: - apm/node_modules - build/node_modules - node_modules - - electron test: override: From ee32342230cc083eb91fab009fb51574d7f3b2c6 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 20 Jul 2016 20:33:21 +0200 Subject: [PATCH 092/114] Don't remove node_modules if we don't have a fingerprint --- script/fingerprint-clean | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/script/fingerprint-clean b/script/fingerprint-clean index 6c2a67ca0..659395190 100755 --- a/script/fingerprint-clean +++ b/script/fingerprint-clean @@ -1,5 +1,11 @@ #!/usr/bin/env node var fingerprint = require('./utils/fingerprint') +var fs = require('fs') +var path = require('path') + +if (!fs.existsSync(path.resolve(__dirname, '..', 'node_modules', '.atom-ci-fingerprint'))) { + return +} if (fingerprint.fingerprintMatches()) { console.log('node_modules matches current fingerprint ' + fingerprint.fingerprint() + ' - not removing') From a06ff650ee4233ad513abb2beb9dd3e1a91ce81f Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Thu, 21 Jul 2016 11:07:43 +0200 Subject: [PATCH 093/114] Build all the branches --- circle.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/circle.yml b/circle.yml index a5efd757f..86e5cbdae 100644 --- a/circle.yml +++ b/circle.yml @@ -7,11 +7,6 @@ machine: xcode: version: 7.3 -general: - branches: - only: - - as-circle-ci - dependencies: pre: - curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.3/install.sh | bash From 919be72ce7aa2fd339584734d4755efa92707101 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Thu, 21 Jul 2016 11:09:04 +0200 Subject: [PATCH 094/114] Make Atom.app downloadable from the artifacts --- circle.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/circle.yml b/circle.yml index 86e5cbdae..313515b5a 100644 --- a/circle.yml +++ b/circle.yml @@ -7,6 +7,10 @@ machine: xcode: version: 7.3 +general: + artifacts: + - out/Atom.app + dependencies: pre: - curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.3/install.sh | bash From 5a4be54b5622b2127444e3b2ec2d5993d304c5c3 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Thu, 21 Jul 2016 11:43:46 +0200 Subject: [PATCH 095/114] Zip before collecting artifact --- circle.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/circle.yml b/circle.yml index 313515b5a..95ebb024c 100644 --- a/circle.yml +++ b/circle.yml @@ -9,7 +9,7 @@ machine: general: artifacts: - - out/Atom.app + - out/Atom.zip dependencies: pre: @@ -33,3 +33,6 @@ dependencies: test: override: - script/grunt ci + + post: + - zip -r out/Atom.zip out/Atom.app From 64c5924b3fdceab627a8161df90d066b1a519b2e Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Fri, 22 Jul 2016 18:09:15 +0200 Subject: [PATCH 096/114] Replace Travis status badge with CircleCI Signed-off-by: Nathan Sobo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9f052ccff..55d93aff7 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ![Atom](https://cloud.githubusercontent.com/assets/72919/2874231/3af1db48-d3dd-11e3-98dc-6066f8bc766f.png) -[![macOS Build Status](https://travis-ci.org/atom/atom.svg?branch=master)](https://travis-ci.org/atom/atom) [![Windows Build Status](https://ci.appveyor.com/api/projects/status/1tkktwh654w07eim?svg=true)](https://ci.appveyor.com/project/Atom/atom) +[![macOS Build Status](https://circleci.com/gh/atom/atom.svg?style=svg)](https://circleci.com/gh/atom/atom) [![Windows Build Status](https://ci.appveyor.com/api/projects/status/1tkktwh654w07eim?svg=true)](https://ci.appveyor.com/project/Atom/atom) [![Dependency Status](https://david-dm.org/atom/atom.svg)](https://david-dm.org/atom/atom) [![Join the Atom Community on Slack](http://atom-slack.herokuapp.com/badge.svg)](http://atom-slack.herokuapp.com/) From ca09bdf1951a7e12fabfeacf9ee1ac4081eeed44 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Mon, 25 Jul 2016 19:00:47 +0200 Subject: [PATCH 097/114] Remove OS X from Travis Build Matrix Signed-off-by: Nathan Sobo --- .travis.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index b17253332..9ac8cc72a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,18 +9,12 @@ env: global: - ATOM_ACCESS_TOKEN=da809a6077bb1b0aa7c5623f7b2d5f1fec2faae4 -osx_image: xcode7.3 - compiler: clang matrix: include: - os: linux env: NODE_VERSION=4 - - os: osx - env: ATOM_SPECS_TASK=core NODE_VERSION=4 - - os: osx - env: ATOM_SPECS_TASK=packages NODE_VERSION=4 sudo: false From f19e043f5c689c73416bbd54cc4b9bac4ea358de Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Mon, 25 Jul 2016 16:22:22 -0600 Subject: [PATCH 098/114] Revert "Use apm@1.12.2 with Node v4 and npm v3 \o/" --- .travis.yml | 16 +++++++--------- Dockerfile | 8 +++++--- apm/package.json | 2 +- appveyor.yml | 3 +-- build/package.json | 2 +- build/tasks/compile-packages-slug-task.coffee | 2 -- script/bootstrap | 9 +++++++-- script/cibuild-atom-linux | 11 +++++------ script/utils/fingerprint.js | 8 +++----- 9 files changed, 30 insertions(+), 31 deletions(-) diff --git a/.travis.yml b/.travis.yml index b17253332..7b6113aa0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,18 +9,18 @@ env: global: - ATOM_ACCESS_TOKEN=da809a6077bb1b0aa7c5623f7b2d5f1fec2faae4 -osx_image: xcode7.3 - compiler: clang matrix: include: + - os: linux + env: NODE_VERSION=0.12 - os: linux env: NODE_VERSION=4 - os: osx - env: ATOM_SPECS_TASK=core NODE_VERSION=4 + env: ATOM_SPECS_TASK=core NODE_VERSION=0.12 - os: osx - env: ATOM_SPECS_TASK=packages NODE_VERSION=4 + env: ATOM_SPECS_TASK=packages NODE_VERSION=0.12 sudo: false @@ -28,15 +28,16 @@ install: - git clone https://github.com/creationix/nvm.git /tmp/.nvm - source /tmp/.nvm/nvm.sh - nvm install $NODE_VERSION - - nvm use --delete-prefix $NODE_VERSION + - nvm use $NODE_VERSION script: script/cibuild cache: directories: - node_modules - - apm/node_modules - build/node_modules + - apm/node_modules + - $HOME/.atom/compile-cache notifications: email: @@ -45,11 +46,8 @@ notifications: addons: apt: - sources: - - ubuntu-toolchain-r-test packages: - build-essential - git - libgnome-keyring-dev - fakeroot - - gcc-multilib diff --git a/Dockerfile b/Dockerfile index 22a101743..d792c30c5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ # DESCRIPTION: Image to build Atom and create a .rpm file # Base docker image -FROM nodesource/fedora21:4.2.6 +FROM fedora:21 # Install dependencies RUN yum install -y \ @@ -12,9 +12,11 @@ RUN yum install -y \ glibc-devel \ git-core \ libgnome-keyring-devel \ - rpmdevtools + rpmdevtools \ + nodejs \ + npm -RUN npm install -g npm --loglevel error +RUN npm install -g npm@1.4.28 --loglevel error ADD . /atom WORKDIR /atom diff --git a/apm/package.json b/apm/package.json index 18f313c16..d4fcc851a 100644 --- a/apm/package.json +++ b/apm/package.json @@ -6,6 +6,6 @@ "url": "https://github.com/atom/atom.git" }, "dependencies": { - "atom-package-manager": "1.12.3" + "atom-package-manager": "1.10.0" } } diff --git a/appveyor.yml b/appveyor.yml index 316701aae..6248db85e 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -12,10 +12,9 @@ environment: ATOM_DEV_RESOURCE_PATH: c:\projects\atom ATOM_ACCESS_TOKEN: secure: Q7vxmSq0bVCLTTRPzXw5ZhPTe7XYhWxX0tQV6neEkddTH6pZkOYNmSCG6VnMX2f+ - ATOM_NOISY_BUILD: 1 matrix: - - NODE_VERSION: 4.4.5 + - NODE_VERSION: 0.10.35 install: - SET PATH=C:\Program Files\Atom\resources\cli;%PATH% diff --git a/build/package.json b/build/package.json index 533f49417..2f8d88d8a 100644 --- a/build/package.json +++ b/build/package.json @@ -32,7 +32,7 @@ "grunt-standard": "^2.0.0", "legal-eagle": "~0.13.0", "minidump": "~0.9", - "npm": "3.10.5", + "npm": "2.13.3", "rcedit": "~0.3.0", "request": "~2.27.0", "rimraf": "~2.2.2", diff --git a/build/tasks/compile-packages-slug-task.coffee b/build/tasks/compile-packages-slug-task.coffee index f6f297bec..7317f158a 100644 --- a/build/tasks/compile-packages-slug-task.coffee +++ b/build/tasks/compile-packages-slug-task.coffee @@ -40,8 +40,6 @@ module.exports = (grunt) -> continue if path.basename(moduleDirectory) is '.bin' metadataPath = path.join(moduleDirectory, 'package.json') - continue unless fs.existsSync(metadataPath) - metadata = grunt.file.readJSON(metadataPath) continue unless metadata?.engines?.atom? diff --git a/script/bootstrap b/script/bootstrap index 6fcf8fef0..3b9a35735 100755 --- a/script/bootstrap +++ b/script/bootstrap @@ -75,7 +75,7 @@ function bootstrap() { var buildInstallCommand = initialNpmCommand + npmFlags + 'install'; var buildInstallOptions = {cwd: path.resolve(__dirname, '..', 'build')}; - var apmInstallCommand = npmPath + npmFlags + '--target=4.4.5 --global-style ' + 'install'; + var apmInstallCommand = npmPath + npmFlags + '--target=0.10.40 ' + 'install'; var apmInstallOptions = {cwd: apmInstallPath}; var moduleInstallCommand = apmPath + ' install' + apmFlags; var dedupeApmCommand = apmPath + ' dedupe' + apmFlags; @@ -97,7 +97,7 @@ function bootstrap() { } var moduleInstallOptions = {env: moduleInstallEnv}; - if (process.argv.indexOf('--no-quiet') === -1 || process.env.ATOM_NOISY_BUILD) { + if (process.argv.indexOf('--no-quiet') === -1) { buildInstallCommand += ' --loglevel error'; apmInstallCommand += ' --loglevel error'; moduleInstallCommand += ' --loglevel error'; @@ -122,6 +122,11 @@ function bootstrap() { message: 'Installing apm...', options: apmInstallOptions }, + { + command: apmPath + ' clean' + apmFlags, + message: 'Deleting old packages...', + options: moduleInstallOptions + }, { command: moduleInstallCommand, options: moduleInstallOptions diff --git a/script/cibuild-atom-linux b/script/cibuild-atom-linux index fe79c19fe..2c3395608 100755 --- a/script/cibuild-atom-linux +++ b/script/cibuild-atom-linux @@ -7,11 +7,10 @@ export BUILD_ATOM_RELEASES_S3_KEY=$BUILD_ATOM_LINUX_RELEASES_S3_KEY export BUILD_ATOM_RELEASES_S3_SECRET=$BUILD_ATOM_LINUX_RELEASES_S3_SECRET export BUILD_ATOM_RELEASES_S3_BUCKET=$BUILD_ATOM_LINUX_RELEASES_S3_BUCKET -rm -rf /tmp/.atom-nvm -git clone https://github.com/creationix/nvm.git /tmp/.atom-nvm -source /tmp/.atom-nvm/nvm.sh -nvm install 4.4.7 -nvm use 4.4.7 -npm install -g npm +if [ -d /usr/local/share/nodenv ]; then + export NODENV_ROOT=/usr/local/share/nodenv + export PATH=/usr/local/share/nodenv/bin:/usr/local/share/nodenv/shims:$PATH + export NODENV_VERSION="v0.10.21" +fi script/cibuild diff --git a/script/utils/fingerprint.js b/script/utils/fingerprint.js index e1f6276d2..c419ba4fd 100644 --- a/script/utils/fingerprint.js +++ b/script/utils/fingerprint.js @@ -6,14 +6,12 @@ var fingerprintPath = path.resolve(__dirname, '..', '..', 'node_modules', '.atom module.exports = { fingerprint: function () { - var atomPackageJson = fs.readFileSync(path.resolve(__dirname, '..', '..', 'package.json')) - var apmPackageJson = fs.readFileSync(path.resolve(__dirname, '..', '..', 'apm', 'package.json')) + var packageJson = fs.readFileSync(path.resolve(__dirname, '..', '..', 'package.json')) //Include the electron minor version in the fingerprint since that changing requires a re-install - var electronVersion = JSON.parse(atomPackageJson).electronVersion.replace(/\.\d+$/, '') - var apmVersion = JSON.parse(apmPackageJson).dependencies['atom-package-manager'] + var electronVersion = JSON.parse(packageJson).electronVersion.replace(/\.\d+$/, '') - var body = electronVersion + apmVersion + process.platform + process.version + var body = electronVersion + process.platform + process.version return crypto.createHash('sha1').update(body).digest('hex') }, From 8550fe028b407c1744275a88b2ac3ef1bd51d0cb Mon Sep 17 00:00:00 2001 From: Damien Guard Date: Tue, 26 Jul 2016 09:10:43 -0700 Subject: [PATCH 099/114] New crashreporter URL to prevent warnings --- src/crash-reporter-start.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/src/crash-reporter-start.coffee b/src/crash-reporter-start.coffee index f19e61179..47aae2469 100644 --- a/src/crash-reporter-start.coffee +++ b/src/crash-reporter-start.coffee @@ -4,6 +4,7 @@ module.exports = (extra) -> crashReporter.start({ productName: 'Atom', companyName: 'GitHub', + submitURL: 'https://crashreporter.atom.io', autoSubmit: false, extra: extra }) From beeeaeb5214e9a3d94f3d9798c69bed1dd1c50ea Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Tue, 26 Jul 2016 10:29:25 -0600 Subject: [PATCH 100/114] Revert "Revert "Use apm@1.12.2 with Node v4 and npm v3 \o/"" --- .travis.yml | 16 +++++++++------- Dockerfile | 8 +++----- apm/package.json | 2 +- appveyor.yml | 3 ++- build/package.json | 2 +- build/tasks/compile-packages-slug-task.coffee | 2 ++ script/bootstrap | 9 ++------- script/cibuild-atom-linux | 11 ++++++----- script/utils/fingerprint.js | 8 +++++--- 9 files changed, 31 insertions(+), 30 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7b6113aa0..b17253332 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,18 +9,18 @@ env: global: - ATOM_ACCESS_TOKEN=da809a6077bb1b0aa7c5623f7b2d5f1fec2faae4 +osx_image: xcode7.3 + compiler: clang matrix: include: - - os: linux - env: NODE_VERSION=0.12 - os: linux env: NODE_VERSION=4 - os: osx - env: ATOM_SPECS_TASK=core NODE_VERSION=0.12 + env: ATOM_SPECS_TASK=core NODE_VERSION=4 - os: osx - env: ATOM_SPECS_TASK=packages NODE_VERSION=0.12 + env: ATOM_SPECS_TASK=packages NODE_VERSION=4 sudo: false @@ -28,16 +28,15 @@ install: - git clone https://github.com/creationix/nvm.git /tmp/.nvm - source /tmp/.nvm/nvm.sh - nvm install $NODE_VERSION - - nvm use $NODE_VERSION + - nvm use --delete-prefix $NODE_VERSION script: script/cibuild cache: directories: - node_modules - - build/node_modules - apm/node_modules - - $HOME/.atom/compile-cache + - build/node_modules notifications: email: @@ -46,8 +45,11 @@ notifications: addons: apt: + sources: + - ubuntu-toolchain-r-test packages: - build-essential - git - libgnome-keyring-dev - fakeroot + - gcc-multilib diff --git a/Dockerfile b/Dockerfile index d792c30c5..22a101743 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ # DESCRIPTION: Image to build Atom and create a .rpm file # Base docker image -FROM fedora:21 +FROM nodesource/fedora21:4.2.6 # Install dependencies RUN yum install -y \ @@ -12,11 +12,9 @@ RUN yum install -y \ glibc-devel \ git-core \ libgnome-keyring-devel \ - rpmdevtools \ - nodejs \ - npm + rpmdevtools -RUN npm install -g npm@1.4.28 --loglevel error +RUN npm install -g npm --loglevel error ADD . /atom WORKDIR /atom diff --git a/apm/package.json b/apm/package.json index d4fcc851a..18f313c16 100644 --- a/apm/package.json +++ b/apm/package.json @@ -6,6 +6,6 @@ "url": "https://github.com/atom/atom.git" }, "dependencies": { - "atom-package-manager": "1.10.0" + "atom-package-manager": "1.12.3" } } diff --git a/appveyor.yml b/appveyor.yml index 6248db85e..316701aae 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -12,9 +12,10 @@ environment: ATOM_DEV_RESOURCE_PATH: c:\projects\atom ATOM_ACCESS_TOKEN: secure: Q7vxmSq0bVCLTTRPzXw5ZhPTe7XYhWxX0tQV6neEkddTH6pZkOYNmSCG6VnMX2f+ + ATOM_NOISY_BUILD: 1 matrix: - - NODE_VERSION: 0.10.35 + - NODE_VERSION: 4.4.5 install: - SET PATH=C:\Program Files\Atom\resources\cli;%PATH% diff --git a/build/package.json b/build/package.json index 2f8d88d8a..533f49417 100644 --- a/build/package.json +++ b/build/package.json @@ -32,7 +32,7 @@ "grunt-standard": "^2.0.0", "legal-eagle": "~0.13.0", "minidump": "~0.9", - "npm": "2.13.3", + "npm": "3.10.5", "rcedit": "~0.3.0", "request": "~2.27.0", "rimraf": "~2.2.2", diff --git a/build/tasks/compile-packages-slug-task.coffee b/build/tasks/compile-packages-slug-task.coffee index 7317f158a..f6f297bec 100644 --- a/build/tasks/compile-packages-slug-task.coffee +++ b/build/tasks/compile-packages-slug-task.coffee @@ -40,6 +40,8 @@ module.exports = (grunt) -> continue if path.basename(moduleDirectory) is '.bin' metadataPath = path.join(moduleDirectory, 'package.json') + continue unless fs.existsSync(metadataPath) + metadata = grunt.file.readJSON(metadataPath) continue unless metadata?.engines?.atom? diff --git a/script/bootstrap b/script/bootstrap index 3b9a35735..6fcf8fef0 100755 --- a/script/bootstrap +++ b/script/bootstrap @@ -75,7 +75,7 @@ function bootstrap() { var buildInstallCommand = initialNpmCommand + npmFlags + 'install'; var buildInstallOptions = {cwd: path.resolve(__dirname, '..', 'build')}; - var apmInstallCommand = npmPath + npmFlags + '--target=0.10.40 ' + 'install'; + var apmInstallCommand = npmPath + npmFlags + '--target=4.4.5 --global-style ' + 'install'; var apmInstallOptions = {cwd: apmInstallPath}; var moduleInstallCommand = apmPath + ' install' + apmFlags; var dedupeApmCommand = apmPath + ' dedupe' + apmFlags; @@ -97,7 +97,7 @@ function bootstrap() { } var moduleInstallOptions = {env: moduleInstallEnv}; - if (process.argv.indexOf('--no-quiet') === -1) { + if (process.argv.indexOf('--no-quiet') === -1 || process.env.ATOM_NOISY_BUILD) { buildInstallCommand += ' --loglevel error'; apmInstallCommand += ' --loglevel error'; moduleInstallCommand += ' --loglevel error'; @@ -122,11 +122,6 @@ function bootstrap() { message: 'Installing apm...', options: apmInstallOptions }, - { - command: apmPath + ' clean' + apmFlags, - message: 'Deleting old packages...', - options: moduleInstallOptions - }, { command: moduleInstallCommand, options: moduleInstallOptions diff --git a/script/cibuild-atom-linux b/script/cibuild-atom-linux index 2c3395608..fe79c19fe 100755 --- a/script/cibuild-atom-linux +++ b/script/cibuild-atom-linux @@ -7,10 +7,11 @@ export BUILD_ATOM_RELEASES_S3_KEY=$BUILD_ATOM_LINUX_RELEASES_S3_KEY export BUILD_ATOM_RELEASES_S3_SECRET=$BUILD_ATOM_LINUX_RELEASES_S3_SECRET export BUILD_ATOM_RELEASES_S3_BUCKET=$BUILD_ATOM_LINUX_RELEASES_S3_BUCKET -if [ -d /usr/local/share/nodenv ]; then - export NODENV_ROOT=/usr/local/share/nodenv - export PATH=/usr/local/share/nodenv/bin:/usr/local/share/nodenv/shims:$PATH - export NODENV_VERSION="v0.10.21" -fi +rm -rf /tmp/.atom-nvm +git clone https://github.com/creationix/nvm.git /tmp/.atom-nvm +source /tmp/.atom-nvm/nvm.sh +nvm install 4.4.7 +nvm use 4.4.7 +npm install -g npm script/cibuild diff --git a/script/utils/fingerprint.js b/script/utils/fingerprint.js index c419ba4fd..e1f6276d2 100644 --- a/script/utils/fingerprint.js +++ b/script/utils/fingerprint.js @@ -6,12 +6,14 @@ var fingerprintPath = path.resolve(__dirname, '..', '..', 'node_modules', '.atom module.exports = { fingerprint: function () { - var packageJson = fs.readFileSync(path.resolve(__dirname, '..', '..', 'package.json')) + var atomPackageJson = fs.readFileSync(path.resolve(__dirname, '..', '..', 'package.json')) + var apmPackageJson = fs.readFileSync(path.resolve(__dirname, '..', '..', 'apm', 'package.json')) //Include the electron minor version in the fingerprint since that changing requires a re-install - var electronVersion = JSON.parse(packageJson).electronVersion.replace(/\.\d+$/, '') + var electronVersion = JSON.parse(atomPackageJson).electronVersion.replace(/\.\d+$/, '') + var apmVersion = JSON.parse(apmPackageJson).dependencies['atom-package-manager'] - var body = electronVersion + process.platform + process.version + var body = electronVersion + apmVersion + process.platform + process.version return crypto.createHash('sha1').update(body).digest('hex') }, From ea8ca2f17fdbb21c9d94150ac375a4f70dfcff67 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Tue, 26 Jul 2016 10:31:21 -0600 Subject: [PATCH 101/114] :arrow_up: atom-package-manager to fix asar-require issues --- apm/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apm/package.json b/apm/package.json index 18f313c16..31162dcaf 100644 --- a/apm/package.json +++ b/apm/package.json @@ -6,6 +6,6 @@ "url": "https://github.com/atom/atom.git" }, "dependencies": { - "atom-package-manager": "1.12.3" + "atom-package-manager": "1.12.5" } } From 8b259a9f9f3883642bae2dbeeb07d395340e99e7 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 27 Jul 2016 10:29:37 +0200 Subject: [PATCH 102/114] Put back Travis badge for Linux build status --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 55d93aff7..a41ddeb64 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ![Atom](https://cloud.githubusercontent.com/assets/72919/2874231/3af1db48-d3dd-11e3-98dc-6066f8bc766f.png) -[![macOS Build Status](https://circleci.com/gh/atom/atom.svg?style=svg)](https://circleci.com/gh/atom/atom) [![Windows Build Status](https://ci.appveyor.com/api/projects/status/1tkktwh654w07eim?svg=true)](https://ci.appveyor.com/project/Atom/atom) +[![macOS Build Status](https://circleci.com/gh/atom/atom.svg?style=svg)](https://circleci.com/gh/atom/atom) [![Linux Build Status](https://travis-ci.org/atom/atom.svg?branch=master)](https://travis-ci.org/atom/atom) [![Windows Build Status](https://ci.appveyor.com/api/projects/status/1tkktwh654w07eim?svg=true)](https://ci.appveyor.com/project/Atom/atom) [![Dependency Status](https://david-dm.org/atom/atom.svg)](https://david-dm.org/atom/atom) [![Join the Atom Community on Slack](http://atom-slack.herokuapp.com/badge.svg)](http://atom-slack.herokuapp.com/) From 1d2f9cfeef46e86d6e5f607bdc148050480660e5 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 27 Jul 2016 11:02:23 +0200 Subject: [PATCH 103/114] Make sure script/grunt exports ATOM_RESOURCE_PATH --- script/grunt | 1 + 1 file changed, 1 insertion(+) diff --git a/script/grunt b/script/grunt index 99f6860d2..50f5930fa 100755 --- a/script/grunt +++ b/script/grunt @@ -1,4 +1,5 @@ #!/usr/bin/env node +process.env.ATOM_RESOURCE_PATH = path.resolve(__dirname, '..'); var runGrunt = require('./utils/run-grunt.js'); // build/node_modules/.bin/grunt "$@" From 94b4ec4ccb0c0aeabc262d6a1626d867cafa7c77 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 27 Jul 2016 11:06:35 +0200 Subject: [PATCH 104/114] :green_heart: Add missing require statement --- script/grunt | 1 + 1 file changed, 1 insertion(+) diff --git a/script/grunt b/script/grunt index 50f5930fa..10f3beac5 100755 --- a/script/grunt +++ b/script/grunt @@ -1,4 +1,5 @@ #!/usr/bin/env node +var path = require('path'); process.env.ATOM_RESOURCE_PATH = path.resolve(__dirname, '..'); var runGrunt = require('./utils/run-grunt.js'); From 9bdc88ad32accf086bf66327844db48fbf0d33ec Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 27 Jul 2016 11:51:57 +0200 Subject: [PATCH 105/114] Export ATOM_RESOURCE_PATH in Gruntfile.coffee if unset --- build/Gruntfile.coffee | 2 ++ script/grunt | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build/Gruntfile.coffee b/build/Gruntfile.coffee index 653e1e268..1f3d889bd 100644 --- a/build/Gruntfile.coffee +++ b/build/Gruntfile.coffee @@ -14,6 +14,8 @@ _ = require 'underscore-plus' packageJson = require '../package.json' module.exports = (grunt) -> + process.env.ATOM_RESOURCE_PATH ?= path.resolve(__dirname, '..'); + require('time-grunt')(grunt) grunt.loadNpmTasks('grunt-babel') diff --git a/script/grunt b/script/grunt index 10f3beac5..99f6860d2 100755 --- a/script/grunt +++ b/script/grunt @@ -1,6 +1,4 @@ #!/usr/bin/env node -var path = require('path'); -process.env.ATOM_RESOURCE_PATH = path.resolve(__dirname, '..'); var runGrunt = require('./utils/run-grunt.js'); // build/node_modules/.bin/grunt "$@" From 921ff851670f4fe8e78753a254112a15a282537d Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 27 Jul 2016 11:59:48 +0200 Subject: [PATCH 106/114] Remove trailing semicolon --- build/Gruntfile.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Gruntfile.coffee b/build/Gruntfile.coffee index 1f3d889bd..5cf88175e 100644 --- a/build/Gruntfile.coffee +++ b/build/Gruntfile.coffee @@ -14,7 +14,7 @@ _ = require 'underscore-plus' packageJson = require '../package.json' module.exports = (grunt) -> - process.env.ATOM_RESOURCE_PATH ?= path.resolve(__dirname, '..'); + process.env.ATOM_RESOURCE_PATH ?= path.resolve(__dirname, '..') require('time-grunt')(grunt) From e4946a1892ab49963fc32c47aeb22159e5f8cee9 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 27 Jul 2016 14:58:23 +0200 Subject: [PATCH 107/114] Make Atom executable as a standard Electron app --- package.json | 1 + ...r-start.coffee => crash-reporter-start.js} | 6 +- src/main-process/atom-portable.coffee | 35 --- src/main-process/atom-portable.js | 56 ++++ src/main-process/main.coffee | 198 ------------- src/main-process/main.js | 259 ++++++++++++++++++ 6 files changed, 319 insertions(+), 236 deletions(-) rename src/{crash-reporter-start.coffee => crash-reporter-start.js} (66%) delete mode 100644 src/main-process/atom-portable.coffee create mode 100644 src/main-process/atom-portable.js delete mode 100644 src/main-process/main.coffee create mode 100644 src/main-process/main.js diff --git a/package.json b/package.json index 717c0e00d..64529598f 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "clear-cut": "^2.0.1", "coffee-script": "1.8.0", "color": "^0.7.3", + "dedent": "0.6.0", "devtron": "1.1.0", "event-kit": "^1.5.0", "find-parent-dir": "^0.3.0", diff --git a/src/crash-reporter-start.coffee b/src/crash-reporter-start.js similarity index 66% rename from src/crash-reporter-start.coffee rename to src/crash-reporter-start.js index 47aae2469..98b210d06 100644 --- a/src/crash-reporter-start.coffee +++ b/src/crash-reporter-start.js @@ -1,6 +1,5 @@ -module.exports = (extra) -> - {crashReporter} = require 'electron' - +module.exports = function (extra) { + const {crashReporter} = require('electron') crashReporter.start({ productName: 'Atom', companyName: 'GitHub', @@ -8,3 +7,4 @@ module.exports = (extra) -> autoSubmit: false, extra: extra }) +} diff --git a/src/main-process/atom-portable.coffee b/src/main-process/atom-portable.coffee deleted file mode 100644 index ae4bb67ec..000000000 --- a/src/main-process/atom-portable.coffee +++ /dev/null @@ -1,35 +0,0 @@ -fs = require 'fs-plus' -path = require 'path' -{ipcMain} = require 'electron' - -module.exports = -class AtomPortable - @getPortableAtomHomePath: -> - execDirectoryPath = path.dirname(process.execPath) - path.join(execDirectoryPath, '..', '.atom') - - @setPortable: (existingAtomHome) -> - fs.copySync(existingAtomHome, @getPortableAtomHomePath()) - - @isPortableInstall: (platform, environmentAtomHome, defaultHome) -> - return false unless platform in ['linux', 'win32'] - return false if environmentAtomHome - return false if not fs.existsSync(@getPortableAtomHomePath()) - # currently checking only that the directory exists and is writable, - # probably want to do some integrity checks on contents in future - @isPortableAtomHomePathWritable(defaultHome) - - @isPortableAtomHomePathWritable: (defaultHome) -> - writable = false - message = "" - try - writePermissionTestFile = path.join(@getPortableAtomHomePath(), "write.test") - fs.writeFileSync(writePermissionTestFile, "test") if not fs.existsSync(writePermissionTestFile) - fs.removeSync(writePermissionTestFile) - writable = true - catch error - message = "Failed to use portable Atom home directory (#{@getPortableAtomHomePath()}). Using the default instead (#{defaultHome}). #{error.message}" - - ipcMain.on 'check-portable-home-writable', (event) -> - event.sender.send 'check-portable-home-writable-response', {writable, message} - writable diff --git a/src/main-process/atom-portable.js b/src/main-process/atom-portable.js new file mode 100644 index 000000000..339625ab3 --- /dev/null +++ b/src/main-process/atom-portable.js @@ -0,0 +1,56 @@ +const fs = require('fs-plus') +const path = require('path') +const {ipcMain} = require('electron') + +module.exports = class AtomPortable { + static getPortableAtomHomePath () { + var execDirectoryPath = path.dirname(process.execPath) + return path.join(execDirectoryPath, '..', '.atom') + } + + static setPortable (existingAtomHome) { + fs.copySync(existingAtomHome, this.getPortableAtomHomePath()) + } + + static isPortableInstall (platform, environmentAtomHome, defaultHome) { + if (!['linux', 'win32'].includes(platform)) { + return false + } + + if (environmentAtomHome) { + return false + } + + if (!fs.existsSync(this.getPortableAtomHomePath())) { + return false + } + + return this.isPortableAtomHomePathWritable(defaultHome) + } + + static isPortableAtomHomePathWritable (defaultHome) { + let writable = false + let message = '' + try { + const writePermissionTestFile = path.join(this.getPortableAtomHomePath(), 'write.test') + + if (!fs.existsSync(writePermissionTestFile)) { + fs.writeFileSync(writePermissionTestFile, 'test') + } + + fs.removeSync(writePermissionTestFile) + writable = true + } catch (error) { + message = `Failed to use portable Atom home directory (${this.getPortableAtomHomePath()}). Using the default instead (${defaultHome}). ${error.message}.` + } + + ipcMain.on('check-portable-home-writable', function (event) { + event.sender.send('check-portable-home-writable-response', { + writable: writable, + message: message + }) + }) + + return writable + } +} diff --git a/src/main-process/main.coffee b/src/main-process/main.coffee deleted file mode 100644 index 5368710aa..000000000 --- a/src/main-process/main.coffee +++ /dev/null @@ -1,198 +0,0 @@ -global.shellStartTime = Date.now() - -process.on 'uncaughtException', (error={}) -> - console.log(error.message) if error.message? - console.log(error.stack) if error.stack? - -{app} = require 'electron' -fs = require 'fs-plus' -path = require 'path' -temp = require 'temp' -yargs = require 'yargs' -previousConsoleLog = console.log -startCrashReporter = require('../crash-reporter-start') -console.log = require 'nslog' - -start = -> - args = parseCommandLine() - args.env = process.env - setupAtomHome(args) - setupCompileCache() - if handleStartupEventWithSquirrel() - return - else if args.test and args.mainProcess - console.log = previousConsoleLog - testRunner = require(path.join(args.resourcePath, 'spec/main-process/mocha-test-runner')) - app.on 'ready', -> testRunner(args.pathsToOpen) - return - - # NB: This prevents Win10 from showing dupe items in the taskbar - app.setAppUserModelId('com.squirrel.atom.atom') - - addPathToOpen = (event, pathToOpen) -> - event.preventDefault() - args.pathsToOpen.push(pathToOpen) - - addUrlToOpen = (event, urlToOpen) -> - event.preventDefault() - args.urlsToOpen.push(urlToOpen) - - app.on 'open-file', addPathToOpen - app.on 'open-url', addUrlToOpen - app.on 'will-finish-launching', startCrashReporter - - if args.userDataDir? - app.setPath('userData', args.userDataDir) - else if args.test - app.setPath('userData', temp.mkdirSync('atom-test-data')) - - app.on 'ready', -> - app.removeListener 'open-file', addPathToOpen - app.removeListener 'open-url', addUrlToOpen - - AtomApplication = require path.join(args.resourcePath, 'src', 'main-process', 'atom-application') - AtomApplication.open(args) - - console.log("App load time: #{Date.now() - global.shellStartTime}ms") unless args.test - -normalizeDriveLetterName = (filePath) -> - if process.platform is 'win32' - filePath.replace /^([a-z]):/, ([driveLetter]) -> driveLetter.toUpperCase() + ":" - else - filePath - -handleStartupEventWithSquirrel = -> - return false unless process.platform is 'win32' - SquirrelUpdate = require './squirrel-update' - squirrelCommand = process.argv[1] - SquirrelUpdate.handleStartupEvent(app, squirrelCommand) - -setupAtomHome = ({setPortable}) -> - return if process.env.ATOM_HOME - - atomHome = path.join(app.getPath('home'), '.atom') - AtomPortable = require './atom-portable' - - if setPortable and not AtomPortable.isPortableInstall(process.platform, process.env.ATOM_HOME, atomHome) - try - AtomPortable.setPortable(atomHome) - catch error - 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() - - try - atomHome = fs.realpathSync(atomHome) - - process.env.ATOM_HOME = atomHome - -setupCompileCache = -> - compileCache = require('../compile-cache') - compileCache.setAtomHomeDirectory(process.env.ATOM_HOME) - -writeFullVersion = -> - process.stdout.write """ - Atom : #{app.getVersion()} - Electron: #{process.versions.electron} - Chrome : #{process.versions.chrome} - Node : #{process.versions.node} - - """ - -parseCommandLine = -> - version = app.getVersion() - options = yargs(process.argv[1..]).wrap(100) - options.usage """ - Atom Editor v#{version} - - Usage: atom [options] [path ...] - - One or more paths to files or folders may be specified. If there is an - existing Atom window that contains all of the given folders, the paths - will be opened in that window. Otherwise, they will be opened in a new - window. - - Environment Variables: - - 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. - Defaults to `~/.atom`. - """ - # Deprecated 1.0 API preview flag - options.alias('1', 'one').boolean('1').describe('1', 'This option is no longer supported.') - options.boolean('include-deprecated-apis').describe('include-deprecated-apis', 'This option is not currently supported.') - options.alias('d', 'dev').boolean('d').describe('d', 'Run in development mode.') - options.alias('f', 'foreground').boolean('f').describe('f', 'Keep the main process in the foreground.') - options.alias('h', 'help').boolean('h').describe('h', 'Print this usage message.') - options.alias('l', 'log-file').string('l').describe('l', 'Log all output to file.') - options.alias('n', 'new-window').boolean('n').describe('n', 'Open a new window.') - 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 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.alias('m', 'main-process').boolean('m').describe('m', 'Run the specified specs in the main process.') - 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 information.') - options.alias('w', 'wait').boolean('w').describe('w', 'Wait for window to be closed before returning.') - options.alias('a', 'add').boolean('a').describe('add', 'Open path as a new project in last used window.') - options.string('socket-path') - options.string('user-data-dir') - options.boolean('clear-window-state').describe('clear-window-state', 'Delete all Atom environment state.') - - args = options.argv - - if args.help - process.stdout.write(options.help()) - process.exit(0) - - if args.version - writeFullVersion() - process.exit(0) - - addToLastWindow = args['add'] - executedFrom = args['executed-from']?.toString() ? process.cwd() - devMode = args['dev'] - safeMode = args['safe'] - pathsToOpen = args._ - test = args['test'] - mainProcess = args['main-process'] - timeout = args['timeout'] - newWindow = args['new-window'] - pidToKillWhenClosed = args['pid'] if args['wait'] - logFile = args['log-file'] - socketPath = args['socket-path'] - userDataDir = args['user-data-dir'] - profileStartup = args['profile-startup'] - clearWindowState = args['clear-window-state'] - urlsToOpen = [] - devResourcePath = process.env.ATOM_DEV_RESOURCE_PATH ? path.join(app.getPath('home'), 'github', 'atom') - setPortable = args.portable - - if args['resource-path'] - devMode = true - resourcePath = args['resource-path'] - - devMode = true if test - resourcePath ?= devResourcePath if devMode - - unless fs.statSyncNoException(resourcePath) - resourcePath = path.dirname(path.dirname(__dirname)) - - # On Yosemite the $PATH is not inherited by the "open" command, so we have to - # explicitly pass it by command line, see http://git.io/YC8_Ew. - process.env.PATH = args['path-environment'] if args['path-environment'] - - resourcePath = normalizeDriveLetterName(resourcePath) - devResourcePath = normalizeDriveLetterName(devResourcePath) - - {resourcePath, devResourcePath, pathsToOpen, urlsToOpen, executedFrom, test, - version, pidToKillWhenClosed, devMode, safeMode, newWindow, - logFile, socketPath, userDataDir, profileStartup, timeout, setPortable, - clearWindowState, addToLastWindow, mainProcess} - -start() diff --git a/src/main-process/main.js b/src/main-process/main.js new file mode 100644 index 000000000..9bbc32d09 --- /dev/null +++ b/src/main-process/main.js @@ -0,0 +1,259 @@ +global.shellStartTime = Date.now() + +process.on('uncaughtException', function (error = {}) { + if (error.message != null) { + console.log(error.message) + } + + if (error.stack != null) { + console.log(error.stack) + } +}) + +const {app} = require('electron') +const fs = require('fs-plus') +const path = require('path') +const temp = require('temp') +const yargs = require('yargs') +const dedent = require('dedent') +const previousConsoleLog = console.log +console.log = require('nslog') + +function start () { + const args = parseCommandLine() + args.env = process.env + setupAtomHome(args) + setupCompileCache() + + if (handleStartupEventWithSquirrel()) { + return + } else if (args.test && args.mainProcess) { + console.log = previousConsoleLog + app.on('ready', function () { + const testRunner = require(path.join(args.resourcePath, 'spec/main-process/mocha-test-runner')) + testRunner(args.pathsToOpen) + }) + return + } + + app.setAppUserModelId('com.squirrel.atom.atom') + + const startCrashReporter = require('../crash-reporter-start') + function addPathToOpen (event, pathToOpen) { + event.preventDefault() + args.pathsToOpen.push(pathToOpen) + } + + function addUrlToOpen (event, urlToOpen) { + event.preventDefault() + args.urlsToOpen.push(urlToOpen) + } + + app.on('open-file', addPathToOpen) + app.on('open-url', addUrlToOpen) + app.on('will-finish-launching', startCrashReporter) + + if (args.userDataDir != null) { + app.setPath('userData', args.userDataDir) + } else if (args.test) { + app.setPath('userData', temp.mkdirSync('atom-test-data')) + } + + app.on('ready', function () { + app.removeListener('open-file', addPathToOpen) + app.removeListener('open-url', addUrlToOpen) + const AtomApplication = require(path.join(args.resourcePath, 'src', 'main-process', 'atom-application')) + AtomApplication.open(args) + + if (!args.test) { + console.log(`App load time: ${Date.now() - global.shellStartTime}ms`) + } + }) +} + +function normalizeDriveLetterName (filePath) { + if (process.platform === 'win32') { + return filePath.replace(/^([a-z]):/, ([driveLetter]) => driveLetter.toUpperCase() + ':') + } else { + return filePath + } +} + +function handleStartupEventWithSquirrel () { + if (process.platform !== 'win32') { + return false + } + + const SquirrelUpdate = require('./squirrel-update') + const squirrelCommand = process.argv[1] + return SquirrelUpdate.handleStartupEvent(app, squirrelCommand) +} + +function setupAtomHome ({setPortable}) { + if (process.env.ATOM_HOME) { + return + } + + let atomHome = path.join(app.getPath('home'), '.atom') + const AtomPortable = require('./atom-portable') + + if (setPortable && !AtomPortable.isPortableInstall(process.platform, process.env.ATOM_HOME, atomHome)) { + try { + AtomPortable.setPortable(atomHome) + } catch (error) { + 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() + } + + try { + atomHome = fs.realpathSync(atomHome) + } finally { + process.env.ATOM_HOME = atomHome + } +} + +function setupCompileCache () { + const CompileCache = require('../compile-cache') + CompileCache.setAtomHomeDirectory(process.env.ATOM_HOME) +} + +function writeFullVersion () { + process.stdout.write( + `Atom : ${app.getVersion()}\n` + + `Electron: ${process.versions.electron}\n` + + `Chrome : ${process.versions.chrome}\n` + + `Node : ${process.versions.node}\n` + ) +} + +function parseCommandLine () { + const options = yargs(process.argv.slice(1)).wrap(100) + const version = app.getVersion() + options.usage( + dedent`Atom Editor v${version} + + Usage: atom [options] [path ...] + + One or more paths to files or folders may be specified. If there is an + existing Atom window that contains all of the given folders, the paths + will be opened in that window. Otherwise, they will be opened in a new + window. + + Environment Variables: + + 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. + Defaults to \`~/.atom\`.` + ) + options.alias('1', 'one').boolean('1').describe('1', 'This option is no longer supported.') + options.boolean('include-deprecated-apis').describe('include-deprecated-apis', 'This option is not currently supported.') + options.alias('d', 'dev').boolean('d').describe('d', 'Run in development mode.') + options.alias('f', 'foreground').boolean('f').describe('f', 'Keep the main process in the foreground.') + options.alias('h', 'help').boolean('h').describe('h', 'Print this usage message.') + options.alias('l', 'log-file').string('l').describe('l', 'Log all output to file.') + options.alias('n', 'new-window').boolean('n').describe('n', 'Open a new window.') + 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 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.alias('m', 'main-process').boolean('m').describe('m', 'Run the specified specs in the main process.') + 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 information.') + options.alias('w', 'wait').boolean('w').describe('w', 'Wait for window to be closed before returning.') + options.alias('a', 'add').boolean('a').describe('add', 'Open path as a new project in last used window.') + options.string('socket-path') + options.string('user-data-dir') + options.boolean('clear-window-state').describe('clear-window-state', 'Delete all Atom environment state.') + + const args = options.argv + + if (args.help) { + process.stdout.write(options.help()) + process.exit(0) + } + + if (args.version) { + writeFullVersion() + process.exit(0) + } + + const addToLastWindow = args['add'] + let devMode = args['dev'] + const safeMode = args['safe'] + const pathsToOpen = args._ + const test = args['test'] + const mainProcess = args['main-process'] + const timeout = args['timeout'] + const newWindow = args['new-window'] + let executedFrom = null + if (args['executed-from'] && args['executed-from'].toString()) { + executedFrom = args['executed-from'].toString() + } else { + executedFrom = process.cwd() + } + + let pidToKillWhenClosed = null + if (args['wait']) { + pidToKillWhenClosed = args['pid'] + } + + const logFile = args['log-file'] + const socketPath = args['socket-path'] + const userDataDir = args['user-data-dir'] + const profileStartup = args['profile-startup'] + const clearWindowState = args['clear-window-state'] + const urlsToOpen = [] + const setPortable = args.portable + let devResourcePath = process.env.ATOM_DEV_RESOURCE_PATH || path.join(app.getPath('home'), 'github', 'atom') + let resourcePath = null + + if (args['resource-path']) { + devMode = true + resourcePath = args['resource-path'] + } + + if (test) { + devMode = true + } + + if (devMode && !resourcePath) { + resourcePath = devResourcePath + } + + if (!fs.statSyncNoException(resourcePath)) { + resourcePath = path.dirname(path.dirname(__dirname)) + } + + if (args['path-environment']) { + process.env.PATH = args['path-environment'] + } + + resourcePath = normalizeDriveLetterName(resourcePath) + devResourcePath = normalizeDriveLetterName(devResourcePath) + + return { + resourcePath, devResourcePath, pathsToOpen, urlsToOpen, executedFrom, test, + version, pidToKillWhenClosed, devMode, safeMode, newWindow, logFile, socketPath, + userDataDir, profileStartup, timeout, setPortable, clearWindowState, + addToLastWindow, mainProcess + } +} + +start() From 4fc049461ca0628b22ab65bb8600083d8f547c6e Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 27 Jul 2016 14:59:24 +0200 Subject: [PATCH 108/114] `var` -> `const` --- src/main-process/atom-portable.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main-process/atom-portable.js b/src/main-process/atom-portable.js index 339625ab3..24d1b1429 100644 --- a/src/main-process/atom-portable.js +++ b/src/main-process/atom-portable.js @@ -4,7 +4,7 @@ const {ipcMain} = require('electron') module.exports = class AtomPortable { static getPortableAtomHomePath () { - var execDirectoryPath = path.dirname(process.execPath) + const execDirectoryPath = path.dirname(process.execPath) return path.join(execDirectoryPath, '..', '.atom') } From ccccafd4eaddfae53bc8fb560ed18efbf569165b Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 27 Jul 2016 15:00:24 +0200 Subject: [PATCH 109/114] :art: --- src/main-process/main.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main-process/main.js b/src/main-process/main.js index 9bbc32d09..8161da183 100644 --- a/src/main-process/main.js +++ b/src/main-process/main.js @@ -16,6 +16,7 @@ const path = require('path') const temp = require('temp') const yargs = require('yargs') const dedent = require('dedent') +const startCrashReporter = require('../crash-reporter-start') const previousConsoleLog = console.log console.log = require('nslog') @@ -38,7 +39,6 @@ function start () { app.setAppUserModelId('com.squirrel.atom.atom') - const startCrashReporter = require('../crash-reporter-start') function addPathToOpen (event, pathToOpen) { event.preventDefault() args.pathsToOpen.push(pathToOpen) @@ -195,7 +195,6 @@ function parseCommandLine () { } const addToLastWindow = args['add'] - let devMode = args['dev'] const safeMode = args['safe'] const pathsToOpen = args._ const test = args['test'] @@ -221,6 +220,7 @@ function parseCommandLine () { const clearWindowState = args['clear-window-state'] const urlsToOpen = [] const setPortable = args.portable + let devMode = args['dev'] let devResourcePath = process.env.ATOM_DEV_RESOURCE_PATH || path.join(app.getPath('home'), 'github', 'atom') let resourcePath = null From 9ad9a96b34f15ccac9a38163dca5431750a9f841 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 27 Jul 2016 15:09:08 +0200 Subject: [PATCH 110/114] Copy comments --- src/main-process/atom-portable.js | 2 ++ src/main-process/main.js | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/src/main-process/atom-portable.js b/src/main-process/atom-portable.js index 24d1b1429..7d395c0e7 100644 --- a/src/main-process/atom-portable.js +++ b/src/main-process/atom-portable.js @@ -25,6 +25,8 @@ module.exports = class AtomPortable { return false } + // Currently checking only that the directory exists and is writable, + // probably want to do some integrity checks on contents in future. return this.isPortableAtomHomePathWritable(defaultHome) } diff --git a/src/main-process/main.js b/src/main-process/main.js index 8161da183..432f73832 100644 --- a/src/main-process/main.js +++ b/src/main-process/main.js @@ -37,6 +37,7 @@ function start () { return } + // NB: This prevents Win10 from showing dupe items in the taskbar app.setAppUserModelId('com.squirrel.atom.atom') function addPathToOpen (event, pathToOpen) { @@ -152,6 +153,7 @@ function parseCommandLine () { ATOM_HOME The root path for all configuration files and folders. Defaults to \`~/.atom\`.` ) + // Deprecated 1.0 API preview flag options.alias('1', 'one').boolean('1').describe('1', 'This option is no longer supported.') options.boolean('include-deprecated-apis').describe('include-deprecated-apis', 'This option is not currently supported.') options.alias('d', 'dev').boolean('d').describe('d', 'Run in development mode.') @@ -242,6 +244,8 @@ function parseCommandLine () { } if (args['path-environment']) { + // On Yosemite the $PATH is not inherited by the "open" command, so we have to + // explicitly pass it by command line, see http://git.io/YC8_Ew. process.env.PATH = args['path-environment'] } From e5da1011d4de9ff9251797f1f5a0093c5b57bd3d Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 27 Jul 2016 20:01:52 +0200 Subject: [PATCH 111/114] :arrow_up: :green_heart: language-html Signed-off-by: Nathan Sobo --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 64529598f..29b64f38c 100644 --- a/package.json +++ b/package.json @@ -130,7 +130,7 @@ "language-gfm": "0.88.0", "language-git": "0.15.0", "language-go": "0.42.1", - "language-html": "0.45.0", + "language-html": "0.45.1", "language-hyperlink": "0.16.0", "language-java": "0.23.0", "language-javascript": "0.119.0", From 67046ff2d972b44418b0fcd9d2edab94874d2395 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Wed, 27 Jul 2016 14:46:41 -0600 Subject: [PATCH 112/114] :arrow_up: tree-view to address flaky specs (hopefully) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 29b64f38c..488e26db3 100644 --- a/package.json +++ b/package.json @@ -117,7 +117,7 @@ "symbols-view": "0.113.0", "tabs": "0.100.0", "timecop": "0.33.2", - "tree-view": "0.208.1", + "tree-view": "0.208.2", "update-package-dependencies": "0.10.0", "welcome": "0.34.0", "whitespace": "0.33.0", From 7c79a5b9739994027a8db5af61c84a8da838e29b Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Wed, 27 Jul 2016 12:16:54 -0600 Subject: [PATCH 113/114] Fix regression where spacebar scrolled elements containing editors /cc @hellendag --- src/text-editor-component.coffee | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/text-editor-component.coffee b/src/text-editor-component.coffee index e6fc0dc15..3949f18e5 100644 --- a/src/text-editor-component.coffee +++ b/src/text-editor-component.coffee @@ -365,7 +365,12 @@ class TextEditorComponent onTextInput: (event) => event.stopPropagation() - event.preventDefault() + + # WARNING: If we call preventDefault on the input of a space character, + # then the browser interprets the spacebar keypress as a page-down command, + # causing spaces to scroll elements containing editors. This is impossible + # to test. + event.preventDefault() if event.data isnt ' ' return unless @isInputEnabled() From 0aa4256bcf40a1d4cbef7601bfb4e0c5c34cdb47 Mon Sep 17 00:00:00 2001 From: Damien Guard Date: Thu, 28 Jul 2016 10:16:37 -0700 Subject: [PATCH 114/114] :arrow_up: settings-view@0.241.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 488e26db3..58174153d 100644 --- a/package.json +++ b/package.json @@ -109,7 +109,7 @@ "notifications": "0.65.0", "open-on-github": "1.2.0", "package-generator": "1.0.0", - "settings-view": "0.240.1", + "settings-view": "0.241.0", "snippets": "1.0.2", "spell-check": "0.67.1", "status-bar": "1.4.0",