From ae5411c37b9c712e0a6b973eaf729753cd21e7c1 Mon Sep 17 00:00:00 2001 From: Patrick Detlefsen Date: Mon, 22 Jun 2015 15:16:50 +0200 Subject: [PATCH] move squirrel bahaviour into proper place --- .../lib/auto-updater/auto-updater-win.coffee | 23 ++++-------- .../auto-updater/squirrel-update-win.coffee | 35 +++++++++++++------ 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/atom/browser/api/lib/auto-updater/auto-updater-win.coffee b/atom/browser/api/lib/auto-updater/auto-updater-win.coffee index 1f9fcd185fc..a3fbd8822ad 100644 --- a/atom/browser/api/lib/auto-updater/auto-updater-win.coffee +++ b/atom/browser/api/lib/auto-updater/auto-updater-win.coffee @@ -1,10 +1,12 @@ {EventEmitter} = require 'events' SquirrelUpdate = require './auto-updater/squirrel-update-win' +app = require('app') class AutoUpdater extends EventEmitter quitAndInstall: -> - # TODO + SquirrelUpdate.processStart -> + app.quit() setFeedUrl: (updateUrl) -> # set feed URL only when it hasn't been set before @@ -36,27 +38,16 @@ class AutoUpdater extends EventEmitter @emit 'update-not-available' return + # info about the newly installed version and a function any of the event listeners can call to restart the application @emit 'update-downloaded', {}, update.releaseNotes, update.version, new Date(), @updateUrl, => @quitAndInstall() downloadUpdate: (callback) -> - SquirrelUpdate.spawn ['--download', @updateUrl], (error, stdout) -> - return callback(error) if error? - - try - # Last line of output is the JSON details about the releases - json = stdout.trim().split('\n').pop() - update = JSON.parse(json)?.releasesToApply?.pop?() - catch error - error.stdout = stdout - return callback(error) - - callback(null, update) + SquirrelUpdate.download(callback) installUpdate: (callback) -> - SquirrelUpdate.spawn(['--update', @updateUrl], callback) + SquirrelUpdate.update(@updateUrl, callback) supportsUpdates: -> - SquirrelUpdate.existsSync() - + SquirrelUpdate.supported() module.exports = new AutoUpdater() diff --git a/atom/browser/api/lib/auto-updater/squirrel-update-win.coffee b/atom/browser/api/lib/auto-updater/squirrel-update-win.coffee index d57a0130784..f07584f4c54 100644 --- a/atom/browser/api/lib/auto-updater/squirrel-update-win.coffee +++ b/atom/browser/api/lib/auto-updater/squirrel-update-win.coffee @@ -9,11 +9,11 @@ exeName = path.basename(process.execPath) # Spawn a command and invoke the callback when it completes with an error # and the output from standard out. -spawn = (command, args, callback) -> +spawnUpdate = (args, callback) -> stdout = '' try - spawnedProcess = ChildProcess.spawn(command, args) + spawnedProcess = ChildProcess.spawn(updateDotExe, args) catch error # Spawn can throw an error process.nextTick -> callback?(error, stdout) @@ -29,14 +29,29 @@ spawn = (command, args, callback) -> error?.stdout ?= stdout callback?(error, stdout) -# Spawn the Update.exe with the given arguments and invoke the callback when -# the command completes. -spawnUpdate = (args, callback) -> - spawn(updateDotExe, args, callback) +processStart = (callback) -> + spawnUpdate(['--processStart', exeName], callback) -# Exports -exports.spawn = spawnUpdate +download = (callback) -> + spawnUpdate ['--download', @updateUrl], (error, stdout) -> + return callback(error) if error? -# Is the Update.exe installed with Atom? -exports.existsSync = -> + try + # Last line of output is the JSON details about the releases + json = stdout.trim().split('\n').pop() + update = JSON.parse(json)?.releasesToApply?.pop?() + catch error + error.stdout = stdout + return callback(error) + + callback(null, update) + +update = (updateUrl, callback) -> + spawnUpdate ['--update', updateUrl], callback + +# Is the Update.exe installed with the current application? +exports.supported = -> fs.accessSync(updateDotExe, fs.R_OK) +exports.processStart = processStart +exports.download = download +exports.update = update