/* IRC-Bot "Kvasir" Copyright (C) 2016 Fenris Wolf (fenris@folksprak.org) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ declare var process; /** * @author fenris */ function cxefajxo(argumentoj : Array) : void { function malkonfesado() : void { console.info("Kvasir Copyright (C) 2016 Fenris Wolf"); console.info("This program comes with ABSOLUTELY NO WARRANTY."); console.info("This is free software, and you are welcome to redistribute it"); console.info("under certain conditions."); } function sekurigi() : void { process.on ( "uncaughtException", function (event : Event) : void { console.warn("malloka escepto: ", event); } ); } function lancxi(agordoj : Object, fino : ()=>void = function () {}) : void { let kliento : klaso_kliento = new klaso_kliento_irc(agordoj, agordoj["prokrasto"]); kliento.stirado_arangxi(agordoj["administrantoj"]); vokado_atendi ( agordoj["kromajxoj"].map ( function (ero : Object) : (preta : ()=>void)=>void { return ( function (preta : ()=>void) : void { console.log("-- sxarganta na '" + ero["vojo"] + "' ..."); klaso_kromajxo_ekstera.krei ( ero["vojo"], function (eraro : Error, kromajxo : klaso_kromajxo_ekstera) : void { if (eraro != null) { console.warn(eraro); } else { kliento.kromajxo_aldoni ( kromajxo, ero["aktiva"], undefined, function (eraro : Error) : void { if (eraro != null) { throw (new Error("-- la kromajxo '" + ero["vojo"] + "' ne sxargeblas: " + String(eraro))); } else { preta(); } } ); } // console.log("-- ... preta"); // preta(); } ); } ); } ), function () : void { console.log("-- konektanta ..."); kliento.konekti ( {}, function () : void { console.log("-- konektita"); agordoj["auxtolancxo"].forEach(x => kliento.enigi(new klaso_evento_eniga_mesagxo(null, null, x))); fino(); } ); } ); } function agordoj_legi(vojo : string, uzado : (agordoj : Object)=>void) : void { _fs.readFile ( vojo, {"encoding": "utf8", "flag": "r"}, function (eraro : any, enhavo : string) : void { if (eraro != undefined) { throw (new Error("agordoj ne enlegeblas: " + eraro.toString())); } else { let agordoj : Object; try { agordoj = JSON.parse(enhavo); } catch (escpto) { throw (new Error("agordoj ne enlegeblas: " + escpto.toString())); agordoj = null; } if (agordoj != null) { uzado(agordoj); } } } ); } console.error(argumentoj); malkonfesado(); sekurigi(); let vojo : string = ((argumentoj.length > 0) ? argumentoj.shift() : "agordoj.json"); agordoj_legi(vojo, agordoj => lancxi(agordoj)); } cxefajxo(process.argv.slice(2));