Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 73bf1a9

Browse files
fixes plugin init order issue.
Signed-off-by: Eric Wang <skygragon@gmail.com>
1 parent a37018d commit 73bf1a9

File tree

2 files changed

+18
-15
lines changed

2 files changed

+18
-15
lines changed

‎lib/commands/plugin.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,11 @@ cmd.handler = function(argv) {
7979
const name = argv.name;
8080

8181
if (argv.install) {
82-
const cb = function(e) {
82+
const cb = function(e,p) {
8383
if (e) return log.error(e);
84+
p.help();
85+
p.save();
8486
Plugin.init();
85-
Plugin.save();
8687
print();
8788
};
8889

‎lib/plugin.js

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,8 @@ Plugin.init = function(head) {
8484

8585
const stats = cache.get(h.KEYS.plugins) || {};
8686

87-
// 1. check installed plugins
88-
let plugins = [];
87+
// 1. find installed plugins
88+
let installed = [];
8989
for (let f of file.listCodeDir('lib/plugins')) {
9090
const p = f.data;
9191
if (!p) continue;
@@ -98,39 +98,41 @@ Plugin.init = function(head) {
9898
log.trace('new plugin, enable by default');
9999
p.enabled = true;
100100
}
101+
installed.push(p);
102+
}
103+
// the one with bigger `id` comes first
104+
installed = _.sortBy(installed, x => -x.id);
101105

106+
// 2. init all in reversed order
107+
for (let i = installed.length - 1; i >= 0; --i) {
108+
const p = installed[i];
102109
if (p.enabled) {
103110
p.init();
104111
log.trace('inited plugin: ' + p.name);
105112
} else {
106113
log.trace('skipped plugin: ' + p.name);
107114
}
108-
109-
plugins.push(p);
110115
}
111116

112-
// chain the plugins together
113-
// the one has bigger `id` comes first
114-
plugins = _.sortBy(plugins, x => -x.id);
115-
117+
// 3. chain together
118+
const plugins = installed.filter(x => x.enabled);
116119
let last = head;
117120
for (let p of plugins) {
118-
if (!p.enabled) continue;
119121
last.setNext(p);
120122
last = p;
121123
}
122124

123-
// 2. check saved plugins
125+
// 4. check missing plugins
124126
const missings = [];
125127
for (let k of _.keys(stats)) {
126-
if (plugins.find(x => x.name === k)) continue;
128+
if (installed.find(x => x.name === k)) continue;
127129
const p = new Plugin(-1, k, 'missing');
128130
p.enabled = stats[k];
129131
missings.push(p);
132+
log.trace('missing plugin:' + p.name);
130133
}
131-
log.trace('missing plugins: ' + missings.length);
132134

133-
Plugin.plugins = plugins.concat(missings);
135+
Plugin.plugins = installed.concat(missings);
134136
return missings.length === 0;
135137
};
136138

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /