diff options
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') |
