From fd8e2150660bc8be47d6237f7821f0de2a30ccf6 Mon Sep 17 00:00:00 2001 From: totoro Date: Mon, 15 Feb 2016 01:52:09 +0100 Subject: [PATCH] now generate all files in given destination directory --- src/generation/create_table.anubis | 7 ++++--- src/generation/files.anubis | 51 +++++++++++++++++++++++++++++---------------------- src/generation/menu.anubis | 5 +++-- 3 files changed, 36 insertions(+), 27 deletions(-) diff --git a/src/generation/create_table.anubis b/src/generation/create_table.anubis index a9ab56f..77b2f13 100644 --- a/src/generation/create_table.anubis +++ b/src/generation/create_table.anubis @@ -101,14 +101,15 @@ define String public define Maybe(One) generate_create_table ( - List(HK_App) apps //list of the table model description + List(HK_App) apps, //list of the table model description + String dest_dir )= //TODO manage version with version = "1.0.0.0", version_str = find_and_replace(version,".","_"), //replace the dot by underscore because dot is not allowed in function name by Anubis language - with file_name = "database/generated/migration/to_"+version+".anubis", - with script_file_name = "database/generated/migration/to_"+version+"_scripts.anubis", + with file_name = dest_dir+"database/generated/migration/to_"+version+".anubis", + with script_file_name = dest_dir+"database/generated/migration/to_"+version+"_scripts.anubis", //create all necessary directories if doesn't exist. make_directories(file_name); diff --git a/src/generation/files.anubis b/src/generation/files.anubis index e798706..da1e505 100644 --- a/src/generation/files.anubis +++ b/src/generation/files.anubis @@ -24,7 +24,8 @@ read check.anubis define Maybe(One) generate_table ( - HK_Table org_table + HK_Table org_table, //table to generate + String dest_dir //root directory of the generation ) = since org_table is hk_table(name, short_name, old_model, display), @@ -34,7 +35,7 @@ define Maybe(One) with model = hk_model([hk_column("id", p_key, []). columns], show_string ), with table = hk_table(name, short_name, model, display), println("Generating file for table ["+name+"]"); - with file_name = "database/generated/"+name+".anubis", + with file_name = dest_dir+"database/generated/"+name+".anubis", //create all necessary directories if doesn't exist. make_directories(file_name); @@ -62,39 +63,43 @@ define Maybe(One) define One make_all_tables ( - List(HK_Table) tables //list of the table model description + List(HK_Table) tables, //list of the table model description + String dest_dir ) = if tables is { [] then println("Generation finished"), [h . t] then - if generate_table(h) is + if generate_table(h, dest_dir) is { failure then println("Generation error") - success(_) then make_all_tables(t) + success(_) then make_all_tables(t, dest_dir) } }. define One make_all_tables ( - List(HK_App) apps + List(HK_App) apps, + String dest_dir + )= map_forget((HK_App app) |-> since app is hk_app(app_name, _, _, tables), println("generating tables for App ["+app_name+"]"); - make_all_tables(tables), apps). + make_all_tables(tables, dest_dir), apps). define Maybe(One) generate_vtm_file ( - List(String) transmit, - List(String) view, - List(String) edit, - List(String) writer + List(String) transmit, + List(String) view, + List(String) edit, + List(String) writer, + String dest_dir )= - with file_name = "database/generated/vtm.anubis", + with file_name = dest_dir+"database/generated/vtm.anubis", if file(file_name, new) is { failure then println("can't create file "+file_name);failure, @@ -138,16 +143,17 @@ define One List(String) so_far_transmit, List(String) so_far_view, List(String) so_far_edit, - List(String) so_far_writer + List(String) so_far_writer, + String dest_dir )= if tables is { [] then if apps is { - [] then forget(generate_vtm_file(so_far_transmit, so_far_view, so_far_edit, so_far_writer));println("Generation finished"), + [] then forget(generate_vtm_file(so_far_transmit, so_far_view, so_far_edit, so_far_writer, dest_dir));println("Generation finished"), [app . apps_t] then - _make_vtm(apps_t, app.hk_tables, so_far_transmit, so_far_view, so_far_edit, so_far_writer) + _make_vtm(apps_t, app.hk_tables, so_far_transmit, so_far_view, so_far_edit, so_far_writer, dest_dir) }, @@ -158,16 +164,17 @@ define One with edit = "vtm_edit(\""+name+"\", get_editable_"+name+")", with writer = "tm_writer(\""+name+"\", update_"+name+")", - _make_vtm(apps, t, [transmit . so_far_transmit], [view . so_far_view], [edit . so_far_edit], [writer . so_far_writer]) + _make_vtm(apps, t, [transmit . so_far_transmit], [view . so_far_view], [edit . so_far_edit], [writer . so_far_writer], dest_dir) }. define One make_vtm ( - List(HK_App) apps //list of the applications + List(HK_App) apps, //list of the applications + String dest_dir ) = - _make_vtm(apps, [], [], [], [], []). + _make_vtm(apps, [], [], [], [], [], dest_dir). define Maybe(One) @@ -183,13 +190,13 @@ define Maybe(One) success(database) then since database is hk_database(name, apps), println("Generating models for Database "+name); - make_all_tables(apps); + make_all_tables(apps, destination_dir); println("Generating VTM for Database "+name); - make_vtm(apps); + make_vtm(apps, destination_dir); println("Generating create for Database "+name); - if generate_create_table(apps) is failure then println("failure");failure else + if generate_create_table(apps, destination_dir) is failure then println("failure");failure else println("Generating menu for Database "+name); - if generate_menus(apps) is failure then println("failure");failure else + if generate_menus(apps, destination_dir) is failure then println("failure");failure else success(unique) }. diff --git a/src/generation/menu.anubis b/src/generation/menu.anubis index cf771f2..42de70d 100644 --- a/src/generation/menu.anubis +++ b/src/generation/menu.anubis @@ -51,10 +51,11 @@ define String public define Maybe(One) generate_menus ( - List(HK_App) apps //list of the table model description + List(HK_App) apps, //list of the table model description + String dest_dir )= - with file_name = "web_pages/generated/apps_menu.anubis", + with file_name = dest_dir+"web_pages/generated/apps_menu.anubis", //create all necessary directories if doesn't exist. make_directories(file_name); -- libgit2 0.21.4