annotate plugins/plugin/plugin.js @ 773:8c44bbcbbab9

Misc: style, cleanup and update
author David Demelier <markand@malikania.fr>
date Fri, 26 Oct 2018 13:01:00 +0200
parents 3e816cebed2c
children 06cc2f95f479
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * plugin.js -- plugin inspector
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
628
27587ff92a64 Misc: update copyrights
David Demelier <markand@malikania.fr>
parents: 420
diff changeset
4 * Copyright (c) 2013-2018 David Demelier <markand@malikania.fr>
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
145
410f71eb9237 Plugin plugin: use new format section, #410
David Demelier <markand@malikania.fr>
parents: 64
diff changeset
19 // Plugin information.
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 info = {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
21 name: "plugin",
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
22 author: "David Demelier <markand@malikania.fr>",
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
23 license: "ISC",
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
24 summary: "A plugin to inspect plugins",
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
25 version: "@IRCCD_VERSION@"
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 };
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
27
166
2380d476f987 Plugin plugin: add initial unit test
David Demelier <markand@malikania.fr>
parents: 145
diff changeset
28 // Modules.
2380d476f987 Plugin plugin: add initial unit test
David Demelier <markand@malikania.fr>
parents: 145
diff changeset
29 var Util = Irccd.Util;
2380d476f987 Plugin plugin: add initial unit test
David Demelier <markand@malikania.fr>
parents: 145
diff changeset
30 var Plugin = Irccd.Plugin;
2380d476f987 Plugin plugin: add initial unit test
David Demelier <markand@malikania.fr>
parents: 145
diff changeset
31
145
410f71eb9237 Plugin plugin: use new format section, #410
David Demelier <markand@malikania.fr>
parents: 64
diff changeset
32 Plugin.format = {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
33 "usage": "#{nickname}, usage: #{command} list | info plugin",
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
34 "info": "#{nickname}, #{name}: #{summary}, version #{version} by #{author} (#{license} license).",
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
35 "not-found": "#{nickname}, plugin #{name} does not exist.",
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
36 "too-long": "#{nickname}, plugin list too long, ask in query for more details."
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
38
420
f1414576ceaa Plugin plugin: enable configurable limits, closes #618
David Demelier <markand@malikania.fr>
parents: 397
diff changeset
39 Plugin.config = {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
40 "max-list-lines": 3,
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
41 "max-list-columns": 80
420
f1414576ceaa Plugin plugin: enable configurable limits, closes #618
David Demelier <markand@malikania.fr>
parents: 397
diff changeset
42 }
f1414576ceaa Plugin plugin: enable configurable limits, closes #618
David Demelier <markand@malikania.fr>
parents: 397
diff changeset
43
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 var commands = {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
45 keywords: function (server, channel, origin)
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
46 {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
47 return {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
48 channel: channel,
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
49 command: server.info().commandChar + Plugin.info().name,
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
50 nickname: Util.splituser(origin),
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
51 origin: origin,
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
52 plugin: Plugin.info().name,
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
53 server: server.toString()
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
54 }
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
55 },
397
da240b179e8b Plugin plugin: clean whitespace
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
56
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
57 list: function (server, origin, target, query)
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
58 {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
59 var kw = commands.keywords(server, target, origin);
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
60 var plugins = Plugin.list();
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
61 var lines = [ "" ];
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
62 var maxl = parseInt(Plugin.config["max-list-lines"]);
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
63 var maxc = parseInt(Plugin.config["max-list-columns"]);
397
da240b179e8b Plugin plugin: clean whitespace
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
64
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
65 if (isNaN(maxc)) {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
66 maxc = 80;
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
67 }
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
68 if (isNaN(maxl)) {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
69 maxl = 3;
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
70 }
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
71
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
72 for (var p = 0; p < plugins.length; ++p) {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
73 var l = lines.length - 1;
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
74
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
75 if (plugins[p].length + 1 + lines[l].length > maxc) {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
76 lines.push("");
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
77 l++;
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
78 }
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
79
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
80 lines[l] += plugins[p] + " ";
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
81 }
420
f1414576ceaa Plugin plugin: enable configurable limits, closes #618
David Demelier <markand@malikania.fr>
parents: 397
diff changeset
82
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
83 if (!query && maxl > 0 && lines.length > maxl) {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
84 server.message(target, Util.format(Plugin.format["too-long"], kw));
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
85 } else {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
86 for (var i = 0; i < lines.length; ++i) {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
87 server.message(target, lines[i]);
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
88 }
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
89 }
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
90 },
420
f1414576ceaa Plugin plugin: enable configurable limits, closes #618
David Demelier <markand@malikania.fr>
parents: 397
diff changeset
91
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
92 info: function (server, origin, target, name)
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
93 {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
94 var kw = commands.keywords(server, target, origin);
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
95 var info = Plugin.info(name);
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
96 var str;
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
97
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
98 kw.name = name;
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
99
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
100 if (info) {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
101 kw.author = info.author;
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
102 kw.license = info.license;
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
103 kw.summary = info.summary;
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
104 kw.version = info.version;
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
105
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
106 str = Util.format(Plugin.format["info"], kw);
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
107 } else
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
108 str = Util.format(Plugin.format["not-found"], kw);
397
da240b179e8b Plugin plugin: clean whitespace
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
109
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
110 server.message(target, str);
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
111 },
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
112
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
113 usage: function (server, origin, target)
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
114 {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
115 server.message(target, Util.format(Plugin.format["usage"], commands.keywords(server, target, origin)));
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
116 },
397
da240b179e8b Plugin plugin: clean whitespace
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
117
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
118 execute: function (server, origin, target, message, query)
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
119 {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
120 if (message.length === 0) {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
121 commands.usage(server, origin, target);
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
122 return;
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
123 }
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
124
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
125 var list = message.split(" ");
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
126
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
127 switch (list[0]) {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
128 case "info":
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
129 if (list.length === 2)
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
130 commands.info(server, origin, target, list[1]);
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
131 else
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
132 commands.usage(server, origin, target);
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
133
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
134 break;
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
135 case "list":
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
136 commands.list(server, origin, target, query);
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
137 break;
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
138 default:
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
139 commands.usage(server, origin, target);
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
140 break;
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
141 }
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
142 }
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 };
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
144
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 function onCommand(server, origin, channel, message)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
147 commands.execute(server, origin, channel, message, false)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
149
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 function onQueryCommand(server, origin, message)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
152 commands.execute(server, origin, origin, message, true)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
153 }