X-Git-Url: http://git.roojs.org/?p=gnome.introspection-doc-generator;a=blobdiff_plain;f=JSDOC%2FOptions.js;h=7fac06f828ce910e0e993102eb49a33a1043e086;hp=b545e9f71f0139c98a868759ecb52fcfe0442bde;hb=a67931117fc1f532da5016752f7dd3c625ce25d3;hpb=f432e03f493d6dc28fa2ec954f288adf9819f5fc diff --git a/JSDOC/Options.js b/JSDOC/Options.js index b545e9f..7fac06f 100644 --- a/JSDOC/Options.js +++ b/JSDOC/Options.js @@ -2,41 +2,55 @@ /** * Options management... */ -XObject = import.XObject.XObject; -File = import.File.File; +XObject = imports.XObject.XObject; +File = imports.File.File; Options = { + + // generic stuff... + "--help" : 'Show help', // was h + "help": false, // was h;se - argTypes : { - "baseDir" : 'Base Directory (root directory of code)', - "target" : 'Target Directory (where html files go)', - "cacheDirectory": 'Cached Files Directory', - "conf" : 'Read From a Configuration file', // was c. - configuration file.. - parsed with JSON.parse - "template" : 'Template Directory', // was t. - // "recurse": false, // was r. - not supported.. - "ext" : 'Extension of code files to read (normally js)', // was x. - "publishExt" : 'Extension of html files to write (normally html)', - //"private": '', // was p - //"allfunctions": '', // was a - //"encoding": '', // was e. - //"nocode": '', // was n - //"out": '', // was o. - //"suppress": '', // was s ??? used? - "outputSource" : 'Output the Source code to symbols/src/* (boolean)', - //"testmode": '', // was t - "help" : 'Show help', // was h - "verbose" : 'Show verbose messages', // was v - //"disablecache": '', // was C -- not needed? - see if cacheDirectory was set.. - "define" : [], // was D. - "handler" : [], // was H -- not supported.. - } + // configurable settings.. - + "usage" : "Usage seed jsdocbuild.js OPTIONS \n", + + + // options get defined like this.. + "--src" : "source directory (either absolute - starts with "/" or relative " + + "- without, in which case it's added to baseDir", + "--exclude-src" : 'Ex', + "--baseDir" : 'Base Directory (root directory of code)', + "--target" : 'Target Directory (where html files go)', + "--cacheDirectory": 'Cached Files Directory', + "--conf" : 'Read From a Configuration file', // was c. - configuration file.. - parsed with JSON.parse + "--templateDir" : 'Template Directory', // was t. + // "recurse": false, // was r. - not supported.. + "--ext" : 'Extension of code files to read (normally js)', // was x. + "--publishExt" : 'Extension of html files to write (normally html)', + //"private": '', // was p + //"allfunctions": '', // was a + //"encoding": '', // was e. + //"nocode": '', // was n + //"out": '', // was o. + //"suppress": '', // was s ??? used? + "--outputSource" : 'Output the Source code to symbols/src/* (boolean)', + //"testmode": '', // was t + "--verbose" : 'Show verbose messages', // was v + //"disablecache": '', // was C -- not needed? - see if cacheDirectory was set.. + //"define" : [], // was D. + //"handler" : [], // was H -- not supported.. + + + // and now the defaults.. (which type can be infered from..) + "src" : [], + "exclude-src" : [], "baseDir" : '', // base directory - "target" : '', // was d. ?? source directory (needed to put temporary files..) "cacheDirectory" : '', "conf" : '', // was c. - configuration file.. - parsed with JSON.parse - "template": '', // was t. + "templateDir": '', // was t. // "recurse": false, // was r. - not supported.. "ext": 'js', // was x. "publishExt" : 'html', @@ -48,11 +62,16 @@ Options = { "suppress": '', // was s ??? used? "outputSource" : true, "testmode": '', // was t - "help": '', // was h + "verbose": '', // was v "disablecache": '', // was C "define" : [], // was D. "handler" : [], // was H -- not supported.. + + + "version" : "1.0", + "copyright" : "LGPL", + LOG : { warn : function(str) { print("Warn: " +str ); @@ -68,48 +87,84 @@ Options = { }, init : function() { + + if (this.help) { + this.showHelp(); + + } + + // the reset of this is specific to JSDOC - and can not be moved to a generic handler.. + + this.LOG.verbose = this.verbose; + if (!this.baseDir) { // should we set this to cwd? + throw { + name: "ArgumentError", + message: "No baseDir specified" + }; + } + // this is most likely to come from the command line.. if (this.conf) { - XObject.extend(this, JSON.parse(File.read(this.conf)));; + var conf = this.conf[0] == '/' ? this.conf : this.baseDir + '/' + this.conf; + + XObject.extend(this, JSON.parse(File.read(conf)));; } // help ?? -- usage.. - + if (!this.src.length) { throw { name: "ArgumentError", message: "No source directories specified" }; } - if (!this.template) { + // append full path to source directories. + var _this= this; + var src = this.src; + this.src = []; + src.forEach(function(v, i) { + if (!v.length || v[0] != '/') { + v = _this.baseDir + (v.length ? '/' + v : ''); + } + if (!File.isDirectory(v)) { + throw { + name: "ArgumentError", + message: "invalid Source Directory : " + v + }; + } + _this.src.push(v); + }); + + + if (!this.templateDir) { throw { name: "ArgumentError", - message: "No template specified" + message: "No templateDir Directory specified" }; } - + if (this.templateDir[0] !='/') { + this.templateDir = this.baseDir + '/' + this.templateDir; + } + + if (!this.target) { throw { name: "ArgumentError", message: "No directory specified" }; } - f (!this.baseDir) { - throw { - name: "ArgumentError", - message: "No baseDir specified" - }; - } + + //print(JSON.stringify(this, null,4)); // should cacheDirectory be a subdirectory of target?? // if not set.. - if (!this.cacheDirectory) { - throw { - name: "ArgumentError", - message: "No cacheDirectory specified" - }; - } + //if (!this.cacheDirectory) { + // throw { + // name: "ArgumentError", + // message: "No cacheDirectory specified" + // }; + // } }, /** @@ -123,51 +178,69 @@ Options = { args.shift(); //seed args.shift(); // pack.js - - - - - for(var i =0; i < args.length;i++) { - if (args[i] == '-o') { - cfg.target = args[i+1]; - i++; - continue; + if (args[i].substring(0,2) != '--') { + + throw { + name: "ArgumentError", + message: "Unknown argument: " + args[i] + }; } - if (args[i] == '-O') { - cfg.debugTarget = args[i+1]; - i++; - continue; + var a = args[i].substring(2); + if (typeof(this[args[i]]) == 'undefined') { + throw { + name: "ArgumentError", + message: "Unknown argument: " + args[i] + }; } - if (args[i] == '-t') { - cfg.translateJSON = args[i+1]; + // type!!?!? + if (typeof(this[a]) == 'string') { + this[a] = args[i+1]; i++; continue; } - if (args[i] == '-w') { - cfg.tmpDir = args[i+1]; + if (typeof(this[a]) == 'boolean') { + if (['false', 'true'].indexOf(args[i+1]) < 0) { + throw { + name: "ArgumentError", + message: "Unknown value for : " + args[i] + ' : ' + args[i+1] + }; + } + this[a] = args[i+1] == 'true'; i++; continue; } - if (args[i] == '-p') { - cfg.prefix = args[i+1]; + if (typeof(this[a]) == 'object') { // tecnically an array. i++; - continue; + while(i < args.length) + { + if (args[i].substring(0,2) != '--'){ + + break; + } + this[a].push(args[i]); + } + i--; } - - if (args[i] == '-C') { - cfg.cleanup = false; - continue; - } - if (args[i] == '-f') { - cfg.srcfile = args[i+1]; - i++; + throw { + name: "ArgumentError", + message: "Do not know how to handle: " + a + }; + } + + + }, + + + showHelp: function() + { + print(this.usage); + for(var i in this) { + if (i.substring(0,2) != '--') { continue; } - if (cfg.files.indexOf(args[i]) > -1) { - continue; // remove dupes. - } - cfg.files.push(args[i]); + print( i + ' ARG : ' + this[i]); + throw "DONE"; } - + } } \ No newline at end of file