thirdparty/jsdoctoolkit/app/main.js
changeset 3041 c8f47f0b6697
equal deleted inserted replaced
3040:8f9580309846 3041:c8f47f0b6697
       
     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 }