Mercurial > irccd
comparison 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 |
comparison
equal
deleted
inserted
replaced
772:f5ccf65ae929 | 773:8c44bbcbbab9 |
---|---|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | 16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
17 */ | 17 */ |
18 | 18 |
19 // Plugin information. | 19 // Plugin information. |
20 info = { | 20 info = { |
21 name: "plugin", | 21 name: "plugin", |
22 author: "David Demelier <markand@malikania.fr>", | 22 author: "David Demelier <markand@malikania.fr>", |
23 license: "ISC", | 23 license: "ISC", |
24 summary: "A plugin to inspect plugins", | 24 summary: "A plugin to inspect plugins", |
25 version: "@IRCCD_VERSION@" | 25 version: "@IRCCD_VERSION@" |
26 }; | 26 }; |
27 | 27 |
28 // Modules. | 28 // Modules. |
29 var Util = Irccd.Util; | 29 var Util = Irccd.Util; |
30 var Plugin = Irccd.Plugin; | 30 var Plugin = Irccd.Plugin; |
31 | 31 |
32 Plugin.format = { | 32 Plugin.format = { |
33 "usage": "#{nickname}, usage: #{command} list | info plugin", | 33 "usage": "#{nickname}, usage: #{command} list | info plugin", |
34 "info": "#{nickname}, #{name}: #{summary}, version #{version} by #{author} (#{license} license).", | 34 "info": "#{nickname}, #{name}: #{summary}, version #{version} by #{author} (#{license} license).", |
35 "not-found": "#{nickname}, plugin #{name} does not exist.", | 35 "not-found": "#{nickname}, plugin #{name} does not exist.", |
36 "too-long": "#{nickname}, plugin list too long, ask in query for more details." | 36 "too-long": "#{nickname}, plugin list too long, ask in query for more details." |
37 } | 37 } |
38 | 38 |
39 Plugin.config = { | 39 Plugin.config = { |
40 "max-list-lines": 3, | 40 "max-list-lines": 3, |
41 "max-list-columns": 80 | 41 "max-list-columns": 80 |
42 } | 42 } |
43 | 43 |
44 var commands = { | 44 var commands = { |
45 loadFormats: function () | 45 keywords: function (server, channel, origin) |
46 { | 46 { |
47 // --- DEPRECATED ----------------------------------- | 47 return { |
48 // | 48 channel: channel, |
49 // This code will be removed. | 49 command: server.info().commandChar + Plugin.info().name, |
50 // | 50 nickname: Util.splituser(origin), |
51 // Since: 2.1.0 | 51 origin: origin, |
52 // Until: 3.0.0 | 52 plugin: Plugin.info().name, |
53 // Reason: new [format] section replaces it. | 53 server: server.toString() |
54 // | 54 } |
55 // -------------------------------------------------- | 55 }, |
56 for (var key in Plugin.format) { | |
57 var optname = "format-" + key; | |
58 | 56 |
59 if (typeof (Plugin.config[optname]) !== "string") | 57 list: function (server, origin, target, query) |
60 continue; | 58 { |
59 var kw = commands.keywords(server, target, origin); | |
60 var plugins = Plugin.list(); | |
61 var lines = [ "" ]; | |
62 var maxl = parseInt(Plugin.config["max-list-lines"]); | |
63 var maxc = parseInt(Plugin.config["max-list-columns"]); | |
61 | 64 |
62 if (Plugin.config[optname].length === 0) | 65 if (isNaN(maxc)) { |
63 Logger.warning("skipping empty '" + optname + "' format"); | 66 maxc = 80; |
64 else | 67 } |
65 Plugin.format[key] = Plugin.config[optname]; | 68 if (isNaN(maxl)) { |
66 } | 69 maxl = 3; |
67 }, | 70 } |
68 | 71 |
69 keywords: function (server, channel, origin) | 72 for (var p = 0; p < plugins.length; ++p) { |
70 { | 73 var l = lines.length - 1; |
71 return { | |
72 channel: channel, | |
73 command: server.info().commandChar + Plugin.info().name, | |
74 nickname: Util.splituser(origin), | |
75 origin: origin, | |
76 plugin: Plugin.info().name, | |
77 server: server.toString() | |
78 } | |
79 }, | |
80 | 74 |
81 list: function (server, origin, target, query) | 75 if (plugins[p].length + 1 + lines[l].length > maxc) { |
82 { | 76 lines.push(""); |
83 var kw = commands.keywords(server, target, origin); | 77 l++; |
84 var plugins = Plugin.list(); | 78 } |
85 var lines = [ "" ]; | |
86 var maxl = parseInt(Plugin.config["max-list-lines"]); | |
87 var maxc = parseInt(Plugin.config["max-list-columns"]); | |
88 | 79 |
89 if (isNaN(maxc)) { | 80 lines[l] += plugins[p] + " "; |
90 maxc = 80; | 81 } |
91 } | |
92 if (isNaN(maxl)) { | |
93 maxl = 3; | |
94 } | |
95 | 82 |
96 for (var p = 0; p < plugins.length; ++p) { | 83 if (!query && maxl > 0 && lines.length > maxl) { |
97 var l = lines.length - 1; | 84 server.message(target, Util.format(Plugin.format["too-long"], kw)); |
85 } else { | |
86 for (var i = 0; i < lines.length; ++i) { | |
87 server.message(target, lines[i]); | |
88 } | |
89 } | |
90 }, | |
98 | 91 |
99 if (plugins[p].length + 1 + lines[l].length > maxc) { | 92 info: function (server, origin, target, name) |
100 lines.push(""); | 93 { |
101 l++; | 94 var kw = commands.keywords(server, target, origin); |
102 } | 95 var info = Plugin.info(name); |
96 var str; | |
103 | 97 |
104 lines[l] += plugins[p] + " "; | 98 kw.name = name; |
105 } | |
106 | 99 |
107 if (!query && maxl > 0 && lines.length > maxl) { | 100 if (info) { |
108 server.message(target, Util.format(Plugin.format["too-long"], kw)); | 101 kw.author = info.author; |
109 } else { | 102 kw.license = info.license; |
110 for (var i = 0; i < lines.length; ++i) { | 103 kw.summary = info.summary; |
111 server.message(target, lines[i]); | 104 kw.version = info.version; |
112 } | |
113 } | |
114 }, | |
115 | 105 |
116 info: function (server, origin, target, name) | 106 str = Util.format(Plugin.format["info"], kw); |
117 { | 107 } else |
118 var kw = commands.keywords(server, target, origin); | 108 str = Util.format(Plugin.format["not-found"], kw); |
119 var info = Plugin.info(name); | |
120 var str; | |
121 | 109 |
122 kw.name = name; | 110 server.message(target, str); |
111 }, | |
123 | 112 |
124 if (info) { | 113 usage: function (server, origin, target) |
125 kw.author = info.author; | 114 { |
126 kw.license = info.license; | 115 server.message(target, Util.format(Plugin.format["usage"], commands.keywords(server, target, origin))); |
127 kw.summary = info.summary; | 116 }, |
128 kw.version = info.version; | |
129 | 117 |
130 str = Util.format(Plugin.format["info"], kw); | 118 execute: function (server, origin, target, message, query) |
131 } else | 119 { |
132 str = Util.format(Plugin.format["not-found"], kw); | 120 if (message.length === 0) { |
121 commands.usage(server, origin, target); | |
122 return; | |
123 } | |
133 | 124 |
134 server.message(target, str); | 125 var list = message.split(" "); |
135 }, | |
136 | 126 |
137 usage: function (server, origin, target) | 127 switch (list[0]) { |
138 { | 128 case "info": |
139 server.message(target, Util.format(Plugin.format["usage"], commands.keywords(server, target, origin))); | 129 if (list.length === 2) |
140 }, | 130 commands.info(server, origin, target, list[1]); |
131 else | |
132 commands.usage(server, origin, target); | |
141 | 133 |
142 execute: function (server, origin, target, message, query) | 134 break; |
143 { | 135 case "list": |
144 if (message.length === 0) { | 136 commands.list(server, origin, target, query); |
145 commands.usage(server, origin, target); | 137 break; |
146 return; | 138 default: |
147 } | 139 commands.usage(server, origin, target); |
148 | 140 break; |
149 var list = message.split(" "); | 141 } |
150 | 142 } |
151 switch (list[0]) { | |
152 case "info": | |
153 if (list.length === 2) | |
154 commands.info(server, origin, target, list[1]); | |
155 else | |
156 commands.usage(server, origin, target); | |
157 | |
158 break; | |
159 case "list": | |
160 commands.list(server, origin, target, query); | |
161 break; | |
162 default: | |
163 commands.usage(server, origin, target); | |
164 break; | |
165 } | |
166 } | |
167 }; | 143 }; |
168 | 144 |
169 function onCommand(server, origin, channel, message) | 145 function onCommand(server, origin, channel, message) |
170 { | 146 { |
171 commands.execute(server, origin, channel, message, false) | 147 commands.execute(server, origin, channel, message, false) |
172 } | |
173 | |
174 function onLoad() | |
175 { | |
176 commands.loadFormats(); | |
177 } | 148 } |
178 | 149 |
179 function onQueryCommand(server, origin, message) | 150 function onQueryCommand(server, origin, message) |
180 { | 151 { |
181 commands.execute(server, origin, origin, message, true) | 152 commands.execute(server, origin, origin, message, true) |
182 } | 153 } |
183 | |
184 function onReload() | |
185 { | |
186 commands.loadFormats(); | |
187 } |