fixed initialization on first run

This commit is contained in:
Alberto Miranda
2017-02-01 14:35:28 -03:00
parent 50c100130a
commit 086d8bf00a
2 changed files with 32 additions and 8 deletions

View File

@@ -69,7 +69,7 @@ module.exports = class Plugins {
// a bit after the user launches the terminal
// to prevent slowness
// TODO: handle force updates
if (this.state.saved.installedPlugins !== this.id) {
if (this.needsUpdate()) {
// install immediately if the user changed plugins
console.log('plugins have changed / not init, scheduling plugins installation')
setTimeout(() => {
@@ -86,6 +86,22 @@ module.exports = class Plugins {
`)
}
didPluginsChange () {
return this.state.saved.installedPlugins !== this.id
}
hasPlugins () {
return !this.isEmptyObject(this.plugins)
}
isFirstInstall () {
return (!this.state.saved.installedPlugins && this.hasPlugins())
}
needsUpdate () {
return (this.didPluginsChange() || this.isFirstInstall())
}
getId (plugins) {
const hash = crypto.createHash('sha256');
hash.update(JSON.stringify(plugins));
@@ -332,6 +348,7 @@ module.exports = class Plugins {
requirePlugins () {
console.log('- requirePlugins')
const {plugins} = this.paths
let installNeeded = false
console.log('- requirePlugins: paths: ', plugins)
const load = (path) => {
@@ -355,13 +372,15 @@ module.exports = class Plugins {
// plugin not installed
// node_modules removed? did a manual plugin uninstall?
// try installing and then loading if successfull
this.installPackages((err) => this.loadPlugins(err))
installNeeded = true
// console.error(err)
// this.alert(`Plugin error: Plugin "${basename(path)}" failed to load (${err.message})`)
}
}
if (installNeeded) this.updatePlugins()
return plugins.map(load)
.filter(v => Boolean(v))
}