Improve repl and make output more consistent with raylib 3.0

Fix building issues.
Check for duplicated entries.
This commit is contained in:
TSnake41 2020-03-31 21:34:23 +02:00
parent 1e911f4a05
commit aa786270b5
7 changed files with 44 additions and 26 deletions

View File

@ -14,7 +14,7 @@
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
]] ]]
print "[RAYLUA] Raylua boot script" print "RAYLUA: Raylua boot script"
local ffi = require "ffi" local ffi = require "ffi"
local C = ffi.C local C = ffi.C
@ -822,15 +822,20 @@ do
local i = ffi.new("size_t", 0) local i = ffi.new("size_t", 0)
local NULL = ffi.new("void *", nil) local NULL = ffi.new("void *", nil)
print "[RAYLUA] Loading FFI binding entries." print "RAYLUA: Loading FFI binding entries."
while entries[i].name ~= NULL do while entries[i].name ~= NULL do
local name, proto = ffi.string(entries[i].name), ffi.string(entries[i].proto) local name, proto = ffi.string(entries[i].name), ffi.string(entries[i].proto)
if rl[name] then
print("RAYLUA: Warn: Duplicated FFI entry : " .. name)
end
rl[name] = ffi.cast(proto, entries[i].ptr) rl[name] = ffi.cast(proto, entries[i].ptr)
i = i + 1 i = i + 1
end end
print("[RAYLUA] Loaded " .. tonumber(i) .. " FFI entries.") print("RAYLUA: Loaded " .. tonumber(i) .. " FFI entries.")
end end
-- colors -- colors

View File

@ -21,6 +21,16 @@
#include <raylib.h> #include <raylib.h>
#include <rlgl.h> #include <rlgl.h>
#include <raymath.h>
#include <easings.h>
#include <camera.h>
#include <gestures.h>
#define RAYGUI_SUPPORT_ICONS
#define RAYGUI_IMPLEMENTATION
#define RAYGUI_STATIC
#include <raygui.h>
#define PHYSAC_IMPLEMENTATION #define PHYSAC_IMPLEMENTATION
#define PHYSAC_NO_THREADS #define PHYSAC_NO_THREADS
#include <physac.h> #include <physac.h>

View File

@ -17,12 +17,17 @@
local load = loadstring local load = loadstring
function raylua.repl() function raylua.repl()
print ">> raylua WIP repl <<" print "> raylua v3.0a <"
print "Type 'q' to quit."
print "" print ""
while true do while true do
io.write "> " io.write "> "
local line = io.read "l" local line = io.read "l"
if line == "q" then
break
end
local f, err = loadstring(line) local f, err = loadstring(line)
if f then if f then
@ -57,7 +62,7 @@ if raylua.loadfile then
return return
end end
print "[RAYLUA] Load main.lua from payload." print "RAYLUA: Load main.lua from payload."
require "main" require "main"
if not raylua.isrepl then if not raylua.isrepl then
@ -72,6 +77,6 @@ if arg[1] then
end end
if raylua.isrepl then if raylua.isrepl then
print "[RAYLUA] Go to repl." print "RAYLUA: Go to repl."
raylua.repl() raylua.repl()
end end

View File

@ -126,7 +126,7 @@ static int raylua_builder_add(lua_State *L)
if (!mz_zip_writer_add_file(&builder->zip, dest, path, NULL, 0, if (!mz_zip_writer_add_file(&builder->zip, dest, path, NULL, 0,
MZ_BEST_COMPRESSION)) MZ_BEST_COMPRESSION))
printf("Unable to write %s (%s)\n", dest, path); printf("BUILDER: > Unable to write %s (%s)\n", dest, path);
return 0; return 0;
} }

View File

@ -48,10 +48,8 @@ local append_file_offset = ffi.cast("void (*)(FILE *, FILE *, FILE *)", append_f
local self_path = arg[0] local self_path = arg[0]
local input_path = arg[1] local input_path = arg[1]
print ">> Raylua builder <<" print "BUILDER: Initialized builder"
if #arg == 0 then if #arg == 0 then
print "TODO: Improve builder usage."
print "Usage: raylua_e <input> [output]" print "Usage: raylua_e <input> [output]"
return return
end end
@ -66,7 +64,7 @@ if ffi.os == "Windows" and self_path:sub("-4") ~= ".exe" then
self_path = self_path .. ".exe" self_path = self_path .. ".exe"
end end
print("Self is " .. self_path) print("BUILDER: Self is " .. self_path)
if t == "directory" then if t == "directory" then
local output = arg[2] local output = arg[2]
@ -81,7 +79,7 @@ if t == "directory" then
end end
end end
print("Building " .. output) print("BUILDER: Building " .. output)
local builder = builder_new(self_path, output) local builder = builder_new(self_path, output)
assert(builder, "Can't initialize builder") assert(builder, "Can't initialize builder")
@ -108,13 +106,13 @@ if t == "directory" then
local t = get_type(full_file_path) local t = get_type(full_file_path)
if t == "file" then if t == "file" then
print("Adding file " .. partial_file_path) print("BUILDER: +> " .. partial_file_path)
builder_add(builder, full_file_path, partial_file_path) builder_add(builder, full_file_path, partial_file_path)
elseif t == "directory" then elseif t == "directory" then
print("Adding directory " .. partial_file_path .. "/") print("BUILDER: /> " .. partial_file_path .. "/")
add_dir(root, partial_file_path) add_dir(root, partial_file_path)
else else
print("Unknown file type " .. partial_file_path) print("BUILDER: ?> " .. partial_file_path)
end end
end end
end end
@ -123,7 +121,7 @@ if t == "directory" then
add_dir(input_path, nil) add_dir(input_path, nil)
if not have_main then if not have_main then
print("WARN: main.lua is missing, your executable may not run") print("BUILDER: WARN: main.lua is missing, your executable may not run")
end end
builder_close(builder) builder_close(builder)
@ -139,10 +137,10 @@ elseif t == "file" then
path = path .. ".elf" path = path .. ".elf"
end end
print("Building " .. path) print("BUILDER: Building " .. path)
if ext == ".zip" then if ext == ".zip" then
print "Build from zip file." print "BUILDER: Building from zip file."
local dest = assert(io.open(path, "wb"), "Can't open destination file.") local dest = assert(io.open(path, "wb"), "Can't open destination file.")
local source = assert(io.open(self_path, "rb"), "Can't open self file.") local source = assert(io.open(self_path, "rb"), "Can't open self file.")
@ -154,7 +152,7 @@ elseif t == "file" then
source:close() source:close()
input:close() input:close()
elseif ext == ".lua" then elseif ext == ".lua" then
print "Build from lua file." print "BUILDER: Building from lua file."
local builder = builder_new(self_path, path) local builder = builder_new(self_path, path)
builder_add(builder, input_path, "main.lua") builder_add(builder, input_path, "main.lua")
@ -162,4 +160,4 @@ elseif t == "file" then
end end
end end
print "Done" print "BUILDER: Done"

View File

@ -77,7 +77,7 @@ static bool raylua_init_payload(const char *path, bool direct)
FILE *f = fopen(path, "rb"); FILE *f = fopen(path, "rb");
if (f == NULL) { if (f == NULL) {
puts("[RAYLUA] Can't load self."); puts("RAYLUA: Can't load self.");
return false; return false;
} else { } else {
/* Read offset at the end of the file */ /* Read offset at the end of the file */
@ -101,7 +101,7 @@ int main(int argc, const char **argv)
luaL_openlibs(L); luaL_openlibs(L);
if (L == NULL) if (L == NULL)
puts("[RAYLUA] Unable to initialize Lua."); puts("RAYLUA: Unable to initialize Lua.");
/* Populate arg. */ /* Populate arg. */
lua_newtable(L); lua_newtable(L);
@ -126,16 +126,16 @@ int main(int argc, const char **argv)
strcpy(new_path, path); strcpy(new_path, path);
strcpy(new_path + path_len, ".exe"); strcpy(new_path + path_len, ".exe");
printf("[RAYLUA] Translated self executable name from %s to %s.\n", path, new_path); printf("RAYLUA: Translated self executable name from %s to %s.\n", path, new_path);
path = new_path; path = new_path;
} }
#endif #endif
if (!raylua_init_payload(path, false)) { if (!raylua_init_payload(path, false)) {
#ifdef RAYLUA_NO_BUILDER #ifdef RAYLUA_NO_BUILDER
puts("[RAYLUA] No payload."); puts("RAYLUA: No payload.");
#else #else
puts("[RAYLUA] No payload, use internal builder."); puts("RAYLUA: No payload, use internal builder.");
raylua_builder_boot(L); raylua_builder_boot(L);
#endif #endif
} else { } else {

View File

@ -30,7 +30,7 @@ int main(int argc, const char **argv)
luaL_openlibs(L); luaL_openlibs(L);
if (L == NULL) if (L == NULL)
puts("[RAYLUA] Unable to initialize Lua."); puts("RAYLUA: Unable to initialize Lua.");
lua_newtable(L); lua_newtable(L);