-
-namespace Builder4
-{
-
+
public class AppSettings : Object
{
+
+
// what are we going to have as settings?
public string roo_html_dir { get; set; }
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();
}
- 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,
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
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);
}
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
- );
-
-
- }
}
+
-
-
-
-
-
-
-}
+