electron-updater
Advanced tools
Comparing version 0.0.2 to 0.0.3
@@ -11,8 +11,14 @@ var download = require('./download.js'), | ||
function satisfy(registry, name, desired, current, exists, callback) { | ||
var url = registry + '/' + name + '/' + desired | ||
var url = registry + '/' + name | ||
download.getJson(url, function (err, data) { | ||
if(err) return callback(err) | ||
var available = semver.clean(data.version) | ||
var versions = data.versions | ||
var available; | ||
Object.getOwnPropertyNames(data.versions).forEach(function (v) { | ||
if(semver.satisfies(v, desired) && (!available || semver.gt(v, available))) { | ||
available = v | ||
} | ||
}) | ||
if(!exists || semver.gt(available, current)) { | ||
if(available && (!exists || semver.gt(available, current))) { | ||
return callback(null, { | ||
@@ -34,12 +40,28 @@ name: name, | ||
var name = context.name | ||
var desired = context.channel | ||
var channel = context.channel | ||
var current = context.version | ||
satisfy(registry, name, desired, current, true, callback) | ||
var url = registry + '/' + name | ||
download.getJson(url, function(err, data) { | ||
if(err) return callback(err) | ||
var distTags = data['dist-tags'] | ||
var available = distTags[channel] | ||
if (available && semver.gt(available, current)) { | ||
return callback(null, { | ||
name: name, | ||
desired: channel, | ||
current: current, | ||
available: available | ||
}) | ||
} else { | ||
callback() | ||
} | ||
}) | ||
} | ||
function checkDependency(name, callback) { | ||
if(this.dev) return callback() | ||
var appName = this.name | ||
var registry = this.registry | ||
var desired = this.dependencies[name] | ||
var packagePath = path.join(this.appDir, 'node_modules', name, 'package.json') | ||
var packagePath = path.join(this.appDir, 'node_modules', name, 'package.json') | ||
file.readJson(packagePath, function (err, pkg) { | ||
@@ -61,3 +83,3 @@ var exists = !err | ||
file.readJson(currentPluginsPath, function (err, data) { | ||
var current = (data && data[name]) || '0.0.0' | ||
var current = (data && data[name]) || '0.0.0' | ||
var pluginPackagePath = path.join(appData, 'plugins', name, current, 'package.json') | ||
@@ -64,0 +86,0 @@ var pluginPackageLinkPath = path.join(appData, 'plugins', name, 'link', 'package.json') |
@@ -8,2 +8,4 @@ var directory = require('./directory.js'), | ||
var defaultRegistry = "https://registry.npmjs.org" | ||
function isDevDirectory(appDir, callback) { | ||
@@ -21,28 +23,47 @@ var gitDir = path.join(appDir, '.git') | ||
function readNpmrc(appDir, callback) { | ||
var npmrc = path.join(appDir, '.npmrc') | ||
fs.readFile(npmrc, {encoding:'utf8'}, function (err, contents) { | ||
if (err) return callback(defaultRegistry) | ||
var registry = defaultRegistry | ||
var match = 'registry=' | ||
contents.split('\n').forEach(function (line) { | ||
line = line.trim() | ||
if(line.indexOf(match) === 0) { | ||
registry = line.substring(match.length).replace(/\n/g, '') | ||
return false | ||
} | ||
}) | ||
callback(registry) | ||
}) | ||
} | ||
function load(appDir, callback) { | ||
if(!appDir || !callback) throw new Error('Failed to load app context: invalid argument') | ||
isDevDirectory(appDir, function (dev) { | ||
var packagePath = path.join(appDir, 'package.json') | ||
file.readJson(packagePath, function (err, package) { | ||
if (err) return callback(err) | ||
var name = package.name | ||
var version = package.version | ||
var dirs = new AppDirectory(name) | ||
var appData = path.dirname(dirs.userData()) | ||
var pendingUpdatePath = path.join(appData, '.update') | ||
var channelPath = path.join(appData, '.channel') | ||
fs.readFile(channelPath, function (err, channel) { | ||
channel = channel || 'latest' | ||
fs.stat(pendingUpdatePath, function (err, stat) { | ||
var pendingUpdate = !err && stat.isFile() | ||
callback(null, { | ||
name: name, | ||
version: version, | ||
channel: channel, | ||
dev: dev, | ||
pendingUpdate: pendingUpdate, | ||
registry: "https://registry.npmjs.org", // resolve from .npmrc's | ||
appDir: appDir, | ||
dependencies: package.dependencies || {}, | ||
plugins: package.plugins || {} | ||
readNpmrc(appDir, function (registry) { | ||
var packagePath = path.join(appDir, 'package.json') | ||
file.readJson(packagePath, function (err, package) { | ||
if (err) return callback(err) | ||
var name = package.name | ||
var version = package.version | ||
var dirs = new AppDirectory(name) | ||
var appData = path.dirname(dirs.userData()) | ||
var pendingUpdatePath = path.join(appData, '.update') | ||
var channelPath = path.join(appData, '.channel') | ||
fs.readFile(channelPath, {encoding: 'utf8'}, function (err, channel) { | ||
channel = channel || 'latest' | ||
fs.stat(pendingUpdatePath, function (err, stat) { | ||
var pendingUpdate = !err && stat.isFile() | ||
callback(null, { | ||
name: name, | ||
version: version, | ||
channel: channel, | ||
dev: dev, | ||
pendingUpdate: pendingUpdate, | ||
registry: registry, | ||
appDir: appDir, | ||
dependencies: package.dependencies || {}, | ||
plugins: package.plugins || {} | ||
}) | ||
}) | ||
@@ -49,0 +70,0 @@ }) |
@@ -25,3 +25,3 @@ var util = require('util') | ||
e.url = url | ||
e.headers = res.headers | ||
e.headers = res.headerssu | ||
callback(e, res) | ||
@@ -38,2 +38,3 @@ } | ||
get(url, function (err, res) { | ||
if(err) return callback(err) | ||
var json = '' | ||
@@ -40,0 +41,0 @@ res.setEncoding('utf8') |
@@ -27,2 +27,3 @@ var async = require('async') | ||
var appVersion = this.version | ||
var plugins = this.plugins | ||
var desired = this.plugins[name] | ||
@@ -33,10 +34,20 @@ var dirs = new AppDirectory(appName) | ||
file.readJson(currentPluginsPath, function (err, data) { | ||
if(err) return callback(null, false) | ||
if(err) data = plugins | ||
if(!data || !data[name]) return callback(null, false) | ||
var current = (data && data[name]) | ||
var packagePath = path.join(appData, 'plugins', name, current, 'package.json') | ||
fs.stat(packagePath, function (err, stat) { | ||
if(err) return callback(null, false) | ||
satisfy(desired, current, callback) | ||
}) | ||
var current = (data && data[name]) | ||
async.map( | ||
['link', current], | ||
function (v, callback) { | ||
var packagePath = path.join(appData, 'plugins', name, v, 'package.json') | ||
fs.stat(packagePath, function (err, stat) { | ||
if(err) return callback(null, false) | ||
callback(null, true) | ||
}) | ||
}, | ||
function (err, results) { | ||
if(err) return callback(err) | ||
if(results[0]) return callback(null, true) // if linked, always true | ||
if(!results[1]) return callback(null, false) // if missing always false | ||
satisfy(desired, current, callback) | ||
}) | ||
}) | ||
@@ -43,0 +54,0 @@ } |
{ | ||
"name": "electron-updater", | ||
"version": "0.0.2", | ||
"version": "0.0.3", | ||
"description": "Cross platform auto-updater for electron applications", | ||
@@ -45,2 +45,2 @@ "main": "index.js", | ||
} | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
38082
20
874