4 -- in theory this code can be used as a library... but this is the standard command line version...
7 valac --vapidir=/usr/share/vala/vapi
8 --vapidir=/usr/share/vala/vapi
9 --vapidir=/usr/share/vala-0.30/vapi
11 JSDOC/Lang.vala JSDOC/TextStream.vala JSDOC/TokenReader.vala JSDOC/Token.vala JSDOC/TokenStream.vala JSDOC/Packer.vala
12 JSDOC/Collapse.vala JSDOC/ScopeParser.vala JSDOC/Scope.vala JSDOC/Identifier.vala JSDOC/CompressWhite.vala
13 JSDOC/PackerRun.vala --pkg glib-2.0 --pkg gee-1.0 --pkg gio-2.0 --pkg posix -o /tmp/jspack --target-glib=2.32 -X -lm
20 // --------------- <<<<<<< <MAIN HERE....
23 class PackerRun : Object
25 class PackerRun : Application
28 public string opt_target = null;
29 public string opt_debug_target = null;
30 // public string opt_tmpdir = null;
31 private string opt_basedir = null;
34 * @cfg baseDir -- prefix the files listed in indexfiles with this.
37 public string opt_real_basedir = null; // USE this one it's calcuated based on current path..
39 public string opt_doc_target = null;
40 public string opt_doc_template_dir = null;
41 public bool opt_doc_include_private = false;
43 [CCode (array_length = false, array_null_terminated = true)]
44 private string[]? opt_files = null;
45 [CCode (array_length = false, array_null_terminated = true)]
46 private string[]? opt_files_from = null;
49 public bool opt_debug = false;
52 * @cfg {Boolean} opt_skip_scope (optional) skip Scope parsing and replacement.
53 * usefull for debugging...
55 public bool opt_skip_scope = false;
58 * @cfg {Boolean} opt_keep_whitespace (optional) do not remove white space in output.
59 * usefull for debugging compressed files.
62 public bool opt_keep_whitespace = false;
65 * @cfg {Boolean} opt_dump_tokens (optional) read the first file and dump the tokens.
66 * usefull for debugging...
69 public bool opt_dump_tokens = false;
73 * @cfg {Boolean} opt_clean_cache (optional) clean up temp files after done -
74 * Defaults to false if you set tmpDir, otherwise true.
77 public bool opt_clean_cache = true;
79 // not actually an option yet..
81 public string opt_doc_ext = "html";
84 public OptionEntry[] options;
90 application_id: "org.roojs.jsdoc.packerrun",
91 flags: ApplicationFlags.HANDLES_COMMAND_LINE
96 void parseArgs(string[] args)
100 long_name = "jsfile",
103 arg = OptionArg.FILENAME_ARRAY,
104 arg_data = &opt_files,
105 description = "add a file to compile",
106 arg_description = null
109 long_name = "target",
112 arg = OptionArg.STRING,
113 arg_data = &opt_target,
114 description = "Target File to write (eg. roojs.js)",
115 arg_description = null
118 long_name = "debug-target",
121 arg = OptionArg.STRING,
122 arg_data = &opt_debug_target,
123 description = "Target File to write debug code (eg. roojs-debug.js)",
124 arg_description = null
126 //{ "tmpdir", 'm', 0, OptionArg.STRING, ref opt_tmpdir, "Temporary Directory to use (defaults to /tmp)", null },
129 long_name = "basedir",
132 arg = OptionArg.STRING,
133 arg_data = &opt_basedir,
134 description = "Base directory (where the files listed in index files are located.)",
135 arg_description = null
139 long_name = "index-files",
142 arg = OptionArg.FILENAME_ARRAY,
143 arg_data = &opt_files_from,
144 description = "files that contain listing of files to compile",
145 arg_description = null
149 long_name = "keep-whitespace",
152 arg = OptionArg.NONE,
153 arg_data = &opt_keep_whitespace,
154 description = "Keep whitespace",
155 arg_description = null
159 long_name = "skip-scope",
162 arg = OptionArg.NONE,
163 arg_data = &opt_skip_scope,
164 description = "Skip scope parsing and variable replacement",
165 arg_description = null
171 arg = OptionArg.NONE,
172 arg_data = &opt_debug,
173 description = "Show debug messages",
174 arg_description = null
178 long_name = "dump-tokens",
181 arg = OptionArg.NONE,
182 arg_data = &opt_dump_tokens,
183 description = "Dump the tokens from a file",
184 arg_description = null
188 long_name = "clean-cache",
191 arg = OptionArg.NONE,
192 arg_data = &opt_clean_cache,
193 description = "Clean up the cache after running (slower)",
194 arg_description = null
198 // fixme -- keepwhite.. cleanup
200 // documentation options
201 // usage: roojspacker --basedir roojs1 \
202 // --doc-target roojs1/docs \
203 // --index-files roojs1/buildSDK/dependancy_core.txt \
204 // --index-files roojs1/buildSDK/dependancy_ui.txt \
205 // --index-files roojs1/buildSDK/dependancy_bootstrap.txt \
206 // --doc-template-dir \
209 long_name = "doc-target",
212 arg = OptionArg.STRING,
213 arg_data = &opt_doc_target,
214 description = "Clean up the cache after running (slower)",
215 arg_description = null
219 long_name = "doc-template-dir",
222 arg = OptionArg.STRING,
223 arg_data = &opt_doc_template_dir,
224 description = "Documentation Directory target",
225 arg_description = null
230 long_name = "doc-private",
233 arg = OptionArg.NONE,
234 arg_data = &opt_doc_include_private,
235 description = "Document Private functions",
236 arg_description = null
244 // what's required...
246 GLib.Log.set_handler(null,
247 GLib.LogLevelFlags.LEVEL_DEBUG | GLib.LogLevelFlags.LEVEL_WARNING,
249 print("%s: %s\n", dom, msg);
258 // set the base directory...
259 var curdir = Environment.get_current_dir() + Path.DIR_SEPARATOR_S;
260 if (opt_basedir == null) {
262 opt_real_basedir = curdir;
263 } else if (opt_basedir[0] == '/') {
264 opt_real_basedir = opt_basedir;
266 opt_real_basedir = curdir + opt_basedir;
269 if (opt_real_basedir [opt_real_basedir .length-1].to_string() != Path.DIR_SEPARATOR_S) {
270 opt_real_basedir += Path.DIR_SEPARATOR_S;
273 GLib.debug("real_base_dir = '%s' : opt_basedir ='%s'\n", opt_real_basedir , opt_basedir);
276 if (opt_files == null && opt_files_from == null) {
277 GLib.error("You must list some files with -f or -i to compile - see --help for more details");
278 GLib.Process.exit(1);
282 // now run the Packer...
283 var p = new Packer( this );
286 if (opt_files != null) {
288 foreach (var f in opt_files) {
289 GLib.debug("Adding File %s", f);
293 if (opt_files_from != null) {
295 foreach (var f in opt_files_from) {
296 GLib.debug("Adding File %s", f);
297 p.loadSourceIndex(f);
301 var run_pack = false;
302 if (opt_target != null || opt_debug_target != null || opt_dump_tokens) {
304 p.pack( opt_target == null ? "" : opt_target ,
305 opt_debug_target == null ? "" : opt_debug_target );
307 if (p.outstr.length > 0 ) {
308 stdout.printf ("%s", p.outstr);
311 if (opt_doc_target != null) {
312 //var d = new DocBuilder(p);