resources/RooUsage.txt
[app.Builder.js] / src / Application.vala
index cce3342..2892ae3 100644 (file)
@@ -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
-                        );
-
-
-               }
                
        } 
 
 
-       
-       
-
-
-               
-       
-}