diff options
| author | Indrajith K L | 2025-11-10 01:58:00 +0530 |
|---|---|---|
| committer | Indrajith K L | 2025-11-10 01:58:25 +0530 |
| commit | d9d1a8a51ea7cd7e7076724918008b6adb1302ca (patch) | |
| tree | 59a8f258c9bb4db4edafc2c70993319e3c3c859c /scripts/embed_lua.py | |
| parent | 8c9367f3689aee05d33fc1cae8a5d1aa6d2b5fb8 (diff) | |
| download | reilua-enhanced-d9d1a8a51ea7cd7e7076724918008b6adb1302ca.tar.gz reilua-enhanced-d9d1a8a51ea7cd7e7076724918008b6adb1302ca.tar.bz2 reilua-enhanced-d9d1a8a51ea7cd7e7076724918008b6adb1302ca.zip | |
Add flexible module loading and complete file embedding
- Support any folder structure (no hard-coded folders)
- Embed all file types recursively from any folder
- Fix require() dot-to-slash conversion for embedded modules
- Clean build folder for fresh builds every time
- Generate empty headers for Lua-only projects
Backward compatible with existing projects.
Diffstat (limited to 'scripts/embed_lua.py')
| -rw-r--r-- | scripts/embed_lua.py | 40 |
1 files changed, 32 insertions, 8 deletions
diff --git a/scripts/embed_lua.py b/scripts/embed_lua.py index 9562354..0d20921 100644 --- a/scripts/embed_lua.py +++ b/scripts/embed_lua.py @@ -27,7 +27,17 @@ def embed_files(output_file, input_files): data = inf.read() var_name = sanitize_name(input_file) - f.write(f'/* Embedded file: {input_file} */\n') + # Get relative path for better module loading + # Try to extract path relative to common directories + relative_name = input_file + for prefix in ['build/', 'build\\']: + if prefix in input_file: + parts = input_file.split(prefix, 1) + if len(parts) > 1: + relative_name = parts[1] + break + + f.write(f'/* Embedded file: {relative_name} */\n') f.write(f'static const unsigned char embedded_lua_{idx}_{var_name}[] = {{\n') for i, byte in enumerate(data): @@ -55,18 +65,32 @@ def embed_files(output_file, input_files): f.write('static const EmbeddedLuaFile embedded_lua_files[] = {\n') for idx, input_file in enumerate(input_files): var_name = sanitize_name(input_file) - # Store both original filename and basename for require compatibility - basename = os.path.basename(input_file) - f.write(f' {{ "{basename}", embedded_lua_{idx}_{var_name}, embedded_lua_{idx}_{var_name}_len }},\n') + # Store relative path for proper require() support + relative_name = input_file + for prefix in ['build/', 'build\\']: + if prefix in input_file: + parts = input_file.split(prefix, 1) + if len(parts) > 1: + relative_name = parts[1] + break + # Normalize path separators + relative_name = relative_name.replace('\\', '/') + f.write(f' {{ "{relative_name}", embedded_lua_{idx}_{var_name}, embedded_lua_{idx}_{var_name}_len }},\n') f.write('};\n\n') f.write(f'static const int embedded_lua_file_count = {len(input_files)};\n\n') - # Main entry point (first file) - var_name = sanitize_name(input_files[0]) + # Main entry point (first file with 'main.lua' in name, or first file) + main_idx = 0 + for idx, input_file in enumerate(input_files): + if 'main.lua' in input_file.lower(): + main_idx = idx + break + + var_name = sanitize_name(input_files[main_idx]) f.write('/* Main entry point */\n') - f.write(f'#define embedded_main_lua embedded_lua_0_{var_name}\n') - f.write(f'#define embedded_main_lua_len embedded_lua_0_{var_name}_len\n\n') + f.write(f'#define embedded_main_lua embedded_lua_{main_idx}_{var_name}\n') + f.write(f'#define embedded_main_lua_len embedded_lua_{main_idx}_{var_name}_len\n\n') f.write('#endif /* EMBEDDED_MAIN_H */\n') |
