feat(update): autoupdater adds an updateLevel param

Summary:
There's now an `updateLevel` that can be set in the config file.

It has the valid values of "major", "minor", "patch", and "commit". By
default it upgrades on the "patch" level.

If you want to be on the bleeding edge, manually change the config file to
add `updateLevel: 'commit'`

Test Plan: A new `auto-update-manager-spec` :)

Reviewers: bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D1567
This commit is contained in:
Evan Morikawa 2015-06-11 12:08:47 -07:00
parent 4f62a7c9e1
commit d7f12873b3
7 changed files with 55 additions and 7 deletions

View file

@ -7,3 +7,4 @@
"calendar-bar",
"salesforce"
]
'updateLevel': 'patch'

View file

@ -100,7 +100,7 @@
.attachment-upload-progress {
position: absolute;
left: 0;
bottom: 0px;
bottom: 0;
height: 2px;
width: 0; // Changed by React
z-index: 3;
@ -110,7 +110,7 @@
.attachment-bar-bg {
position: absolute;
left: 0;
bottom: 0px;
bottom: 0;
height: 2px;
width: 100%;
z-index: 2;

View file

@ -34,7 +34,7 @@ textFieldStub = (className) ->
render: -> <div className={className}>{@props.children}</div>
focus: ->
passThroughStub = (props={})->
passThroughStub = (props={}) ->
React.createClass
render: -> <div {...props}>{props.children}</div>

View file

@ -1,7 +1,7 @@
{
"name": "nylas",
"productName": "Nylas",
"version": "0.178.0",
"version": "0.1.0",
"description": "An email OS",
"main": "./src/browser/main.js",
"repository": {

View file

@ -0,0 +1,41 @@
AutoUpdateManager = require '../src/browser/auto-update-manager'
describe "AutoUpdateManager", ->
c1 = get: ->
c2 = get: -> "major"
c3 = get: -> "minor"
c4 = get: -> "patch"
c5 = get: -> "commit"
c6 = get: -> "foo"
base = "https://edgehill.nylas.com/update-check?version="
beforeEach ->
@feedUrl = (version, config) ->
m = new AutoUpdateManager(version, config)
spyOn(m, "setupAutoUpdater")
return m.feedUrl
describe "with attached commit version", ->
beforeEach ->
@v = "3.222.1-abc"
it "correctly sets the feedURL", ->
expect(@feedUrl(@v, c1)).toBe "#{base}3.222.1-abc&level=patch"
expect(@feedUrl(@v, c2)).toBe "#{base}3.222.1-abc&level=major"
expect(@feedUrl(@v, c3)).toBe "#{base}3.222.1-abc&level=minor"
expect(@feedUrl(@v, c4)).toBe "#{base}3.222.1-abc&level=patch"
expect(@feedUrl(@v, c5)).toBe "#{base}3.222.1-abc&level=commit"
expect(@feedUrl(@v, c6)).toBe "#{base}3.222.1-abc&level=patch"
describe "with no attached commit", ->
beforeEach ->
@v = "3.222.1"
it "correctly sets the feedURL", ->
expect(@feedUrl(@v, c1)).toBe "#{base}3.222.1&level=patch"
expect(@feedUrl(@v, c2)).toBe "#{base}3.222.1&level=major"
expect(@feedUrl(@v, c3)).toBe "#{base}3.222.1&level=minor"
expect(@feedUrl(@v, c4)).toBe "#{base}3.222.1&level=patch"
expect(@feedUrl(@v, c5)).toBe "#{base}3.222.1&level=commit"
expect(@feedUrl(@v, c6)).toBe "#{base}3.222.1&level=patch"

View file

@ -77,7 +77,7 @@ class Application
@databases = {}
@windowManager = new WindowManager({@resourcePath, @config, @devMode, @safeMode})
@autoUpdateManager = new AutoUpdateManager(@version)
@autoUpdateManager = new AutoUpdateManager(@version, @config)
@applicationMenu = new ApplicationMenu(@version)
@nylasProtocolHandler = new NylasProtocolHandler(@resourcePath, @safeMode)

View file

@ -16,17 +16,23 @@ module.exports =
class AutoUpdateManager
_.extend @prototype, EventEmitter.prototype
constructor: (@version) ->
constructor: (@version, @config) ->
@state = IdleState
if process.platform is 'win32'
# Squirrel for Windows can't handle query params
# https://github.com/Squirrel/Squirrel.Windows/issues/132
@feedUrl = 'https://edgehill.nylas.com/update-check'
else
@feedUrl = "https://edgehill.nylas.com/update-check?version=#{@version}"
upgradeLevel = @getUpgradeLevel()
@feedUrl = "https://edgehill.nylas.com/update-check?version=#{@version}&level=#{upgradeLevel}"
process.nextTick => @setupAutoUpdater()
getUpgradeLevel: ->
lvl = @config.get("updateLevel") ? "patch"
if lvl not in ["major", "minor", "patch", "commit"] then lvl = "patch"
return lvl
setupAutoUpdater: ->
if process.platform is 'win32'
autoUpdater = require './auto-updater-win32'