1 /** 2 * @version $Id: main.js 795 2009-06-19 07:03:22Z micmath $ 3 */ 4 5 function main() { 6 IO.include("lib/JSDOC.js"); 7 IO.includeDir("plugins/"); 8 9 // process the options 10 11 // the -c option: options are defined in a configuration file 12 if (JSDOC.opt.c) { 13 eval("JSDOC.conf = " + IO.readFile(JSDOC.opt.c)); 14 15 LOG.inform("Using configuration file at '"+JSDOC.opt.c+"'."); 16 17 for (var c in JSDOC.conf) { 18 if (c !== "D" && !defined(JSDOC.opt[c])) { // commandline overrules config file 19 JSDOC.opt[c] = JSDOC.conf[c]; 20 } 21 } 22 23 if (typeof JSDOC.conf["_"] != "undefined") { 24 JSDOC.opt["_"] = JSDOC.opt["_"].concat(JSDOC.conf["_"]); 25 } 26 27 LOG.inform("With configuration: "); 28 for (var o in JSDOC.opt) { 29 LOG.inform(" "+o+": "+JSDOC.opt[o]); 30 } 31 } 32 33 // be verbose 34 if (JSDOC.opt.v) LOG.verbose = true; 35 36 // send log messages to a file 37 if (JSDOC.opt.o) LOG.out = IO.open(JSDOC.opt.o); 38 39 // run the unit tests 40 if (JSDOC.opt.T) { 41 LOG.inform("JsDoc Toolkit running in test mode at "+new Date()+"."); 42 IO.include("frame/Testrun.js"); 43 IO.include("test.js"); 44 } 45 else { 46 // a template must be defined and must be a directory path 47 if (!JSDOC.opt.t && System.getProperty("jsdoc.template.dir")) { 48 JSDOC.opt.t = System.getProperty("jsdoc.template.dir"); 49 } 50 if (JSDOC.opt.t && !JSDOC.opt.t.charAt(JSDOC.opt.t.length-1).match(/[\\\/]/)) { 51 JSDOC.opt.t += SYS.slash; 52 } 53 54 // verbose messages about the options we were given 55 LOG.inform("JsDoc Toolkit main() running at "+new Date()+"."); 56 LOG.inform("With options: "); 57 for (var o in JSDOC.opt) { 58 LOG.inform(" "+o+": "+JSDOC.opt[o]); 59 } 60 61 // initialize and build a symbolSet from your code 62 JSDOC.JsDoc(); 63 64 // debugger's option: dump the entire symbolSet produced from your code 65 if (JSDOC.opt.Z) { 66 LOG.warn("So you want to see the data structure, eh? This might hang if you have circular refs..."); 67 IO.include("frame/Dumper.js"); 68 var symbols = JSDOC.JsDoc.symbolSet.toArray(); 69 for (var i = 0, l = symbols.length; i < l; i++) { 70 var symbol = symbols[i]; 71 print("// symbol: " + symbol.alias); 72 print(symbol.serialize()); 73 } 74 } 75 else { 76 if (typeof JSDOC.opt.t != "undefined") { 77 try { 78 // a file named "publish.js" must exist in the template directory 79 load(JSDOC.opt.t+"publish.js"); 80 81 // and must define a function named "publish" 82 if (!publish) { 83 LOG.warn("No publish() function is defined in that template so nothing to do."); 84 } 85 else { 86 // which will be called with the symbolSet produced from your code 87 publish(JSDOC.JsDoc.symbolSet); 88 } 89 } 90 catch(e) { 91 LOG.warn("Sorry, that doesn't seem to be a valid template: "+JSDOC.opt.t+"publish.js : "+e); 92 } 93 } 94 else { 95 LOG.warn("No template given. Might as well read the usage notes."); 96 JSDOC.usage(); 97 } 98 } 99 } 100 101 // notify of any warnings 102 if (!JSDOC.opt.q && LOG.warnings.length) { 103 print(LOG.warnings.length+" warning"+(LOG.warnings.length != 1? "s":"")+"."); 104 } 105 106 // stop sending log messages to a file 107 if (LOG.out) { 108 LOG.out.flush(); 109 LOG.out.close(); 110 } 111 }