X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=src%2FApplication.vala;h=a39de4b8002ff7b7b00fadc8f9b56645fcb36b82;hb=3ebe55bb39f2089ca4b72871c485718daa7234c4;hp=2892ae309ec1533cf88c46c9cdf31cb5a6c2a921;hpb=03bf0f74c2232e59d8149c55a05e0a369ed32171;p=roobuilder diff --git a/src/Application.vala b/src/Application.vala index 2892ae309..a39de4b80 100644 --- a/src/Application.vala +++ b/src/Application.vala @@ -58,13 +58,14 @@ { "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 }, + { "pull-resources", 0, 0, OptionArg.NONE, ref opt_pull_resources, "Fetch the online resources", 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 }, - + { "test", 0, 0, OptionArg.STRING, ref opt_test, "run a test use 'help' to list the available tests", null }, { null } }; @@ -75,9 +76,11 @@ public static string opt_compile_output; public static string opt_bjs_compile; public static string opt_bjs_compile_target; + public static string opt_test; public static bool opt_debug = false; public static bool opt_list_projects = false; public static bool opt_list_files = false; + public static bool opt_pull_resources = false; public static string _self; @@ -126,6 +129,16 @@ GLib.Process.exit(Posix.EXIT_FAILURE); } + this.initDebug(); + this.runTests(); + this.pullResources(); + + Project.Project.loadAll(); + this.listProjects(); + var cur_project = this.compileProject(); + this.listFiles(cur_project); + this.compileBjs(cur_project); + this.compileVala(); } @@ -159,6 +172,165 @@ return dirname; } + + // --------------- non static... + + void initDebug() + { + + if (BuilderApplication.opt_debug || BuilderApplication.opt_compile_project == null) { + GLib.Log.set_handler(null, + GLib.LogLevelFlags.LEVEL_DEBUG | GLib.LogLevelFlags.LEVEL_WARNING, + (dom, lvl, msg) => { + print("%s: %s\n", dom, msg); + }); + } + + + } + void listProjects() + { + if (!BuilderApplication.opt_list_projects) { + return; + } + print("Projects\n %s\n", Project.Project.listAllToString()); + GLib.Process.exit(Posix.EXIT_SUCCESS); + + } + Project.Project? compileProject() + { + + if (BuilderApplication.opt_compile_project == null) { + return null; + } + Project.Project cur_project = null; + cur_project = Project.Project.getProjectByHash( BuilderApplication.opt_compile_project); + + if (cur_project == null) { + GLib.error("invalid project %s, use --list-projects to show project ids",BuilderApplication.opt_compile_project); + } + cur_project.scanDirs(); + + return cur_project; + + } + void listFiles(Project.Project? cur_project) + { + if (!BuilderApplication.opt_list_files) { + return; + } + if (cur_project == null) { + GLib.error("missing project, use --project to select which project"); + } + print("Files for %s\n %s\n", cur_project.name, cur_project.listAllFilesToString()); + GLib.Process.exit(Posix.EXIT_SUCCESS); + + } + void compileBjs(Project.Project? cur_project) + { + if (BuilderApplication.opt_bjs_compile == null) { + return; + } + if (cur_project == null) { + GLib.error("missing project, use --project to select which project"); + } + var file = cur_project.getByName(BuilderApplication.opt_bjs_compile); + if (file == null) { + GLib.error("missing file %s in project %s", BuilderApplication.opt_bjs_compile, cur_project.name); + } + //BuilderApplication.compileBjs(); + file.loadItems(); + var str = file.toSourceCode(); + + + if (!BuilderApplication.opt_debug) { + print("%s", str); + GLib.Process.exit(Posix.EXIT_SUCCESS); + } + + // dump the node tree + file.tree.dumpProps(); + + + var str_ar = str.split("\n"); + for(var i =0;i { + print("Got %d/%d", (int) p,(int)t); + if (p == t) { + loop.quit(); + } + }); + Resources.singleton().fetchStart(); + loop.run(); + GLib.Process.exit(Posix.EXIT_SUCCESS); + } + + + void runTests() + { + if (opt_test == null) { + return; + } + switch(opt_test) { + case "help": + print(""" +help - list available tests +flutter-project - create a flutter project in /tmp/test-flutter +"""); + break; + case "flutter-project": + Project.Project.loadAll(); + var p = Project.Project.factory("Flutter", "/tmp/test-flutter"); + var pa = p.palete as Palete.Flutter; + pa.dumpusage(); + var ar = pa.getChildList("material.Scaffold"); + GLib.debug("childlist for material.Scaffold is %s", + string.joinv( "\n-- ", ar) + ); + ar = pa.getDropList("material.MaterialApp"); + GLib.debug("droplist for material.MaterialApp is %s", + string.joinv( "\n-- ", ar) + ); + break; + + default: + print("Invalid test\n"); + break; + + + } + GLib.Process.exit(Posix.EXIT_SUCCESS); + } + + }