Skip to content

Commit

Permalink
feat(update): autoupdater adds an updateLevel param
Browse files Browse the repository at this point in the history
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
  • Loading branch information
emorikawa committed Jun 11, 2015
1 parent 4f62a7c commit d7f1287
Show file tree
Hide file tree
Showing 7 changed files with 55 additions and 7 deletions.
1 change: 1 addition & 0 deletions dot-nylas/config.cson
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@
"calendar-bar",
"salesforce"
]
'updateLevel': 'patch'
4 changes: 2 additions & 2 deletions internal_packages/attachments/stylesheets/attachments.less
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -110,7 +110,7 @@
.attachment-bar-bg {
position: absolute;
left: 0;
bottom: 0px;
bottom: 0;
height: 2px;
width: 100%;
z-index: 2;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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>

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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": {
Expand Down
41 changes: 41 additions & 0 deletions spec-nylas/auto-update-manager-spec.coffee
Original file line number Diff line number Diff line change
@@ -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"
2 changes: 1 addition & 1 deletion src/browser/application.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
10 changes: 8 additions & 2 deletions src/browser/auto-update-manager.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down

0 comments on commit d7f1287

Please sign in to comment.