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 public class PackerRun : Object
25 public 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";
89 application_id: "org.roojs.jsdoc.packerrun",
90 flags: ApplicationFlags.HANDLES_COMMAND_LINE
96 public void parseArgs(string[] args)
98 GLib.OptionEntry[] options = {
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
239 var opt_context = new OptionContext ("JSDOC Packer");
242 opt_context.set_help_enabled (true);
243 opt_context.add_main_entries (options, null);
244 if (!opt_context.parse ( ref args)) {
245 print("options parse error");
246 GLib.Process.exit(Posix.EXIT_FAILURE);
252 } catch (OptionError e) {
253 stdout.printf ("error: %s\n", e.message);
254 stdout.printf ("Run '%s --help' to see a full list of available command line options.\n %s",
255 args[0], opt_context.get_help(true,null));
256 GLib.Process.exit(Posix.EXIT_FAILURE);
263 public void runPack()
265 // what's required...
267 GLib.Log.set_handler(null,
268 GLib.LogLevelFlags.LEVEL_DEBUG | GLib.LogLevelFlags.LEVEL_WARNING,
270 print("%s: %s\n", dom, msg);
279 // set the base directory...
280 var curdir = Environment.get_current_dir() + Path.DIR_SEPARATOR_S;
281 if (opt_basedir == null) {
283 opt_real_basedir = curdir;
284 } else if (opt_basedir[0] == '/') {
285 opt_real_basedir = opt_basedir;
287 opt_real_basedir = curdir + opt_basedir;
290 if (opt_real_basedir [opt_real_basedir .length-1].to_string() != Path.DIR_SEPARATOR_S) {
291 opt_real_basedir += Path.DIR_SEPARATOR_S;
294 GLib.debug("real_base_dir = '%s' : opt_basedir ='%s'\n", opt_real_basedir , opt_basedir);
297 if (opt_files == null && opt_files_from == null) {
298 GLib.error("You must list some files with -f or -i to compile - see --help for more details");
299 GLib.Process.exit(1);
303 // now run the Packer...
304 var p = new Packer( this );
307 if (opt_files != null) {
309 foreach (var f in opt_files) {
310 GLib.debug("Adding File %s", f);
314 if (opt_files_from != null) {
316 foreach (var f in opt_files_from) {
317 GLib.debug("Adding File %s", f);
318 p.loadSourceIndex(f);
322 var run_pack = false;
323 if (opt_target != null || opt_debug_target != null || opt_dump_tokens) {
325 p.pack( opt_target == null ? "" : opt_target ,
326 opt_debug_target == null ? "" : opt_debug_target );
328 if (p.outstr.length > 0 ) {
329 stdout.printf ("%s", p.outstr);
332 if (opt_doc_target != null) {
333 //var d = new DocBuilder(p);