From 1cb3d5eae849ce4fd2956ea4a4abffc5295dd0ca Mon Sep 17 00:00:00 2001 From: Dreaded_X Date: Fri, 15 May 2020 02:05:26 +0200 Subject: [PATCH] Improved generate script --- flint.yaml | 12 ++++- test.py => scripts/generate.py | 10 ++-- test/generated/ecs_components.h | 88 --------------------------------- 3 files changed, 17 insertions(+), 93 deletions(-) rename test.py => scripts/generate.py (90%) delete mode 100644 test/generated/ecs_components.h diff --git a/flint.yaml b/flint.yaml index d697296..beccade 100644 --- a/flint.yaml +++ b/flint.yaml @@ -12,6 +12,11 @@ git: include: - .build/git/io/flint.yaml +scripts: + components: + step: pre + command: python scripts/generate.py + targets: sol2: type: lib @@ -57,9 +62,12 @@ targets: type: exe path: test include: - - generated + - ../.build/generated/test/components dependency: - ecs - ecs-lua - ecs_serial - + script: + components: + in: test/include/components.h + out: ecs_components.h diff --git a/test.py b/scripts/generate.py similarity index 90% rename from test.py rename to scripts/generate.py index c35cd61..a21098d 100755 --- a/test.py +++ b/scripts/generate.py @@ -63,11 +63,12 @@ def build_components(cursor, filename): return result def main(argv): - if len(sys.argv) != 2: - print("Usage: {} [header filename]".format(argv[0])) + if len(sys.argv) != 3: + print("Usage: {} [header filename] [output filename]".format(argv[0])) sys.exit() filename = argv[1] + output = argv[2] index = clang.cindex.Index.create() tu = index.parse(filename, ['-x', 'c++', '-std=c++2a', '-Iecs/include', '-I.build/git/stduuid/include', '-I/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include']) @@ -77,7 +78,10 @@ def main(argv): tpl = Template(filename='template.mako') include_file = filename.split('/')[-1] - print(tpl.render(components=components, include_file=include_file)) + + output_file = open(output, "w") + output_file.write(tpl.render(components=components, include_file=include_file)) + output_file.close() # for d in tu.diagnostics: # print(d) diff --git a/test/generated/ecs_components.h b/test/generated/ecs_components.h deleted file mode 100644 index f47ba50..0000000 --- a/test/generated/ecs_components.h +++ /dev/null @@ -1,88 +0,0 @@ -#include "components.h" - -#if __has_include("ecs-lua.h") -#include "sol.hpp" - -namespace generated { - void init(sol::state& lua) { - sol::table preload = lua["package"]["preload"]; - - preload["ecs.Position"] = [&lua] { - sol::table component = lua.create_table(); - component["_id"] = ecs::ComponentID::id; - - component.new_usertype("Position", - "x", &Position::x, "y", &Position::y, - sol::base_classes, sol::bases() - ); - - component.set_function("new", sol::factories([](float _x, float _y) { - return std::make_pair(ecs::ComponentID::id, new Position(_x, _y)); - })); - - component.set_function("_convert", [] (ecs::Component* component) { - return static_cast(component); - }); - - return component; - }; - - preload["ecs.Velocity"] = [&lua] { - sol::table component = lua.create_table(); - component["_id"] = ecs::ComponentID::id; - - component.new_usertype("Velocity", - "x", &Velocity::x, "y", &Velocity::y, - sol::base_classes, sol::bases() - ); - - component.set_function("new", sol::factories([](float _x, float _y) { - return std::make_pair(ecs::ComponentID::id, new Velocity(_x, _y)); - })); - - component.set_function("_convert", [] (ecs::Component* component) { - return static_cast(component); - }); - - return component; - }; - - preload["ecs.Meta"] = [&lua] { - sol::table component = lua.create_table(); - component["_id"] = ecs::ComponentID::id; - - component.new_usertype("Meta", - "name", &Meta::name, - sol::base_classes, sol::bases() - ); - - component.set_function("new", sol::factories([](std::string _name) { - return std::make_pair(ecs::ComponentID::id, new Meta(_name)); - })); - - component.set_function("_convert", [] (ecs::Component* component) { - return static_cast(component); - }); - - return component; - }; - } -} -#endif - -#if __has_include("ecs-serial.h") -namespace generated { - void init() { - ecs::serial::register_component( - &Position::x, &Position::y - ); - ecs::serial::register_component( - &Velocity::x, &Velocity::y - ); - ecs::serial::register_component( - &Meta::name - ); - } -} -#endif -