X-Git-Url: http://git.roojs.org/?p=app.Builder.js;a=blobdiff_plain;f=src%2FApplication.vala;h=2892ae309ec1533cf88c46c9cdf31cb5a6c2a921;hp=cce3342293ba3b6a5c1260de07d8481bad831ce3;hb=HEAD;hpb=a0b2c7b56b558f654d9e49dfe737487987cdabd4 diff --git a/src/Application.vala b/src/Application.vala index cce334229..2892ae309 100644 --- a/src/Application.vala +++ b/src/Application.vala @@ -1,11 +1,10 @@ - -namespace Builder4 -{ - + public class AppSettings : Object { + + // what are we going to have as settings? public string roo_html_dir { get; set; } @@ -19,7 +18,7 @@ namespace Builder4 public static AppSettings factory() { - var setting_file = Application.configDirectory() + "/builder.settings"; + var setting_file = BuilderApplication.configDirectory() + "/builder.settings"; if (!FileUtils.test(setting_file, FileTest.EXISTS)) { return new AppSettings(); @@ -41,10 +40,47 @@ namespace Builder4 } - public static Application application = null; + public static BuilderApplication application = null; - public class Application : Gtk.Application + public class BuilderApplication : Gtk.Application { + + // options - used when builder is run as a compiler + // we have to spawn ourself as a compiler as just running libvala + // as a task to check syntax causes memory leakage.. + // + const OptionEntry[] options = { + + + { "project", 0, 0, OptionArg.STRING, ref opt_compile_project, "Compile a project", null }, + { "target", 0, 0, OptionArg.STRING, ref opt_compile_target, "Target to build", null }, + { "skip-file", 0, 0, OptionArg.STRING, ref opt_compile_skip ,"For test compiles do not add this (usually used in conjunction with add-file ", null }, + { "add-file", 0, 0, OptionArg.STRING, ref opt_compile_add, "Add this file to compile list", null }, + { "output", 0, 0, OptionArg.STRING, ref opt_compile_output, "output binary file path", null }, + { "debug", 0, 0, OptionArg.NONE, ref opt_debug, "Show debug messages", null }, + + // some testing code. + { "list-projects", 0, 0, OptionArg.NONE, ref opt_list_projects, "List Projects", null }, + { "list-files", 0, 0, OptionArg.NONE, ref opt_list_files, "List Files (in a project", null}, + { "bjs", 0, 0, OptionArg.STRING, ref opt_bjs_compile, "convert bjs file", null }, + { "bjs-target", 0, 0, OptionArg.STRING, ref opt_bjs_compile_target, "convert bjs file to tareet : vala / js", null }, + + + { null } + }; + public static string opt_compile_project; + public static string opt_compile_target; + public static string opt_compile_skip; + public static string opt_compile_add; + public static string opt_compile_output; + public static string opt_bjs_compile; + public static string opt_bjs_compile_target; + public static bool opt_debug = false; + public static bool opt_list_projects = false; + public static bool opt_list_files = false; + + public static string _self; + enum Target { INT32, STRING, @@ -62,8 +98,12 @@ namespace Builder4 public AppSettings settings = null; - public Application () + public BuilderApplication ( string[] args) { + + _self = FileUtils.read_link("/proc/self/exe"); + GLib.debug("SELF = %s", _self); + Object( application_id: "org.roojs.app-builder", flags: ApplicationFlags.FLAGS_NONE @@ -71,18 +111,30 @@ namespace Builder4 configDirectory(); this.settings = AppSettings.factory(); - - this.initResources(true); - + var opt_context = new OptionContext ("Application Builder"); + + try { + opt_context.set_help_enabled (true); + opt_context.add_main_entries (options, null); + opt_context.parse (ref args); + + + } catch (OptionError e) { + stdout.printf ("error: %s\n", e.message); + stdout.printf ("Run '%s --help' to see a full list of available command line options.\n %s", + args[0], opt_context.get_help(true,null)); + GLib.Process.exit(Posix.EXIT_FAILURE); + + } } - public static Application singleton() + public static BuilderApplication singleton( string[] args) { if (application==null) { - application = new Application(); + application = new BuilderApplication( args); } @@ -106,74 +158,9 @@ namespace Builder4 return dirname; } - - public void initResources(bool force = false) - { - // files to fetch from resources. - string[] res = { - "bootstrap.builder.html", - "roo.builder.html", - "roo.builder.js", - "Gir.overides", - "RooUsage.txt", - "GtkUsage.txt" - }; - for (var i = 0; i < res.length; i++ ) { - this.fetchResource(res[i], force); - } - - this.fetchResourceFrom ( - "http://git.roojs.org/?p=roojs1;a=blob_plain;f=docs/json/roodata.json", - "roodata.json", - force - ); - - - } - public void fetchResource(string res, bool force) { - if (!force && FileUtils.test(configDirectory() + "/resources/" + res, FileTest.EXISTS)) { - return; - } - this.fetchResourceFrom( - "http://git.roojs.org/?p=app.Builder.js;a=blob_plain;f=resources/" + res, - res, - force - ); - - - } - - public void fetchResourceFrom(string src, string res, bool force) { - if (!force && FileUtils.test(configDirectory() + "/resources/" + res, FileTest.EXISTS)) { - return; - } - // fetch... - print("downloading %s \nto : %s\n", src,res); - var session = new Soup.Session (); - session.user_agent = "App Builder "; - var message = new Soup.Message ("GET", - src - ); - - // send the HTTP request and wait for response - session.send_message (message); - - // output the XML result to stdout - FileUtils.set_contents( - configDirectory() + "/resources/" + res, - (string) message.response_body.data - ); - - - } } + - - - - - - -} +