Skip to content
This repository has been archived by the owner on Jan 10, 2023. It is now read-only.

Commit

Permalink
Merge pull request #467 from learn-co/updater-scope
Browse files Browse the repository at this point in the history
Only install the IDE package if it is an update
  • Loading branch information
drewprice authored May 22, 2017
2 parents 13a0494 + b77ab95 commit 42ed749
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 26 deletions.
9 changes: 6 additions & 3 deletions lib/learn-ide.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,10 @@ export default {
},

activateIDE(state) {
this.isRestartAfterUpdate = (localStorage.get('restartingForUpdate') === 'true');
this.isRestartAfterUpdate = localStorage.remove('restartingForUpdate') === 'true';

if (this.isRestartAfterUpdate) {
updater.didRestartAfterUpdate();
localStorage.delete('restartingForUpdate');
}

this.activateTerminal();
Expand Down Expand Up @@ -114,7 +113,11 @@ export default {

this.subscriptions.add(
atom.config.onDidChange(`${name}.bleedingUpdates`, ({newValue}) => {
if (!newValue) { localStorage.set('didUnsubscribeFromBleedingUpdates', Date.now()) }
var key = 'learn-ide:shouldRollback';
var didSubscribe = newValue;

didSubscribe ? localStorage.delete(key) : localStorage.set(key, Date.now())

updater.checkForUpdate()
})
)
Expand Down
63 changes: 40 additions & 23 deletions lib/updater.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,13 @@ export default {

this._updatePackage().then(pkgResult => {
this._installDependencies().then(depResult => {
var log = `Learn IDE:\n---\n${pkgResult.log}`;
var { code } = pkgResult;
var log = '',
code = 0;

if (pkgResult != null) {
log += `Learn IDE:\n---\n${pkgResult.log}`;
code += pkgResult.code;
}

if (depResult != null) {
log += `\nDependencies:\n---\n${depResult.log}`;
Expand Down Expand Up @@ -102,17 +107,44 @@ export default {
},

_shouldUpdate(latestVersion) {
return this._shouldUpdatePackage(latestVersion) || this._shouldUpdateDependencies();
},

_shouldUpdatePackage(latestVersion) {
var {version} = require('../package.json');

if (localStorage.remove('didUnsubscribeFromBleedingUpdates')) {
if (this._shouldRollback()) {
return !semver.eq(latestVersion, version)
}

if (semver.gt(latestVersion, version)) {
return true;
}
return semver.gt(latestVersion, version)
},

_shouldRollback() {
var rollback = parseInt(localStorage.get('learn-ide:shouldRollback'));

if (!rollback) { return false }

var twelveHours = 12 * 60 * 60;
var rollbackExpires = rollback + twelveHours;

return rollbackExpires > Date.now()
},

_shouldUpdateDependencies() {
var {packageDependencies} = require('../package.json');

return Object.keys(packageDependencies).some(pkg => {
var version = packageDependencies[pkg];
return this._shouldInstallDependency(pkg, version)
});
},

return this._someDependencyIsMismatched();
_shouldInstallDependency(pkgName, latestVersion) {
var pkg = atom.packages.loadPackage(pkgName);
var currentVersion = (pkg === null) ? undefined : pkg.metadata.version;

return !semver.satisfies(currentVersion, latestVersion);
},

_shouldSkipCheck() {
Expand Down Expand Up @@ -145,6 +177,7 @@ export default {
_updatePackage() {
return this._getLatestVersion().then(version => {
localStorage.set('targetedUpdateVersion', version);
if (!this._shouldUpdatePackage(version)) { return }
return install(name, version);
});
},
Expand Down Expand Up @@ -211,22 +244,6 @@ export default {
});
},

_shouldInstallDependency(pkgName, latestVersion) {
var pkg = atom.packages.loadPackage(pkgName);
var currentVersion = (pkg === null) ? undefined : pkg.metadata.version;

return !semver.satisfies(currentVersion, latestVersion);
},

_someDependencyIsMismatched() {
var {packageDependencies} = require('../package.json');

return Object.keys(packageDependencies).some(pkg => {
var version = packageDependencies[pkg];
return this._shouldInstallDependency(pkg, version)
});
},

_updateFailed(detail) {
var {shell, clipboard} = require('electron');

Expand Down

0 comments on commit 42ed749

Please sign in to comment.