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 static string opt_target = null;
29 public static string opt_debug_target = null;
30 // public static string opt_tmpdir = null;
31 private static string opt_basedir = null;
34 * @cfg baseDir -- prefix the files listed in indexfiles with this.
37 public static string opt_real_basedir = null; // USE this one it's calcuated based on current path..
39 public static string opt_doc_target = null;
40 public static string opt_doc_template_dir = null;
41 public static bool opt_doc_include_private = false;
43 [CCode (array_length = false, array_null_terminated = true)]
44 private static string[]? opt_files = null;
45 [CCode (array_length = false, array_null_terminated = true)]
46 private static string[]? opt_files_from = null;
49 public static bool opt_debug = false;
52 * @cfg {Boolean} opt_skip_scope (optional) skip Scope parsing and replacement.
53 * usefull for debugging...
55 public static 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 static 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 static 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 static bool opt_clean_cache = true;
79 // not actually an option yet..
81 public static string opt_doc_ext = "html";
83 const OptionEntry[] options = {
85 { "jsfile", 'f', 0, OptionArg.FILENAME_ARRAY, ref opt_files ,"add a file to compile", null },
86 { "target", 't', 0, OptionArg.STRING, ref opt_target, "Target File to write (eg. roojs.js)", null },
87 { "debug-target", 'T', 0, OptionArg.STRING, ref opt_debug_target, "Target File to write debug code (eg. roojs-debug.js)", null },
88 //{ "tmpdir", 'm', 0, OptionArg.STRING, ref opt_tmpdir, "Temporary Directory to use (defaults to /tmp)", null },
89 { "basedir", 'b', 0, OptionArg.STRING, ref opt_basedir, "Base directory (where the files listed in index files are located.)", null },
91 { "index-files", 'i', 0, OptionArg.FILENAME_ARRAY, ref opt_files_from ,"files that contain listing of files to compile", null },
92 { "keep-whitespace", 'w', 0, OptionArg.NONE, ref opt_keep_whitespace, "Keep whitespace", null },
93 { "skip-scope", 's', 0, OptionArg.NONE, ref opt_skip_scope, "Skip scope parsing and variable replacement", null },
94 { "debug", 0, 0, OptionArg.NONE, ref opt_debug, "Show debug messages", null },
95 { "dump-tokens", 'k', 0, OptionArg.NONE, ref opt_dump_tokens, "Dump the tokens from a file", null },
96 { "clean-cache", 'c', 0, OptionArg.NONE, ref opt_clean_cache, "Clean up the cache after running (slower)", null },
98 // fixme -- keepwhite.. cleanup
100 // documentation options
101 // usage: roojspacker --basedir roojs1 \
102 // --doc-target roojs1/docs \
103 // --index-files roojs1/buildSDK/dependancy_core.txt \
104 // --index-files roojs1/buildSDK/dependancy_ui.txt \
105 // --index-files roojs1/buildSDK/dependancy_bootstrap.txt \
106 // --doc-template-dir\
109 { "doc-target", 'd', 0, OptionArg.STRING, ref opt_doc_target, "Documentation Directory target", null },
110 { "doc-template-dir", 'p', 0, OptionArg.STRING, ref opt_doc_template_dir, "Documentation Directory target", null },
111 { "doc-private", 'p', 0, OptionArg.NONE, ref opt_doc_include_private, "Document Private functions", null },
120 public PackerRun (string[] args)
124 application_id: "org.roojs.jsdoc.packerrun",
125 flags: ApplicationFlags.HANDLES_COMMAND_LINE
130 // what's required...
132 GLib.Log.set_handler(null,
133 GLib.LogLevelFlags.LEVEL_DEBUG | GLib.LogLevelFlags.LEVEL_WARNING,
135 print("%s: %s\n", dom, msg);
144 // set the base directory...
145 var curdir = Environment.get_current_dir() + Path.DIR_SEPARATOR_S;
146 if (opt_basedir == null) {
148 opt_real_basedir = curdir;
149 } else if (opt_basedir[0] == '/') {
150 opt_real_basedir = opt_basedir;
152 opt_real_basedir = curdir + opt_basedir;
155 if (opt_real_basedir [opt_real_basedir .length-1].to_string() != Path.DIR_SEPARATOR_S) {
156 opt_real_basedir += Path.DIR_SEPARATOR_S;
159 GLib.debug("real_base_dir = '%s' : opt_basedir ='%s'\n", opt_real_basedir , opt_basedir);
162 if (opt_files == null && opt_files_from == null) {
163 GLib.error("You must list some files with -f or -i to compile - see --help for more details");
164 GLib.Process.exit(1);
168 // now run the Packer...
169 var p = new Packer( );
172 if (opt_files != null) {
174 foreach (var f in opt_files) {
175 GLib.debug("Adding File %s", f);
179 if (opt_files_from != null) {
181 foreach (var f in opt_files_from) {
182 GLib.debug("Adding File %s", f);
183 p.loadSourceIndex(f);
187 var run_pack = false;
188 if (opt_target != null || opt_debug_target != null || opt_dump_tokens) {
190 p.pack( opt_target == null ? "" : opt_target ,
191 opt_debug_target == null ? "" : opt_debug_target );
193 if (p.outstr.length > 0 ) {
194 stdout.printf ("%s", p.outstr);
197 if (opt_doc_target != null) {
198 //var d = new DocBuilder(p);