lua: initial lua module
parent
3ec82a5a42
commit
7aed449427
3
Makefile
3
Makefile
|
@ -13,8 +13,9 @@ LIBDIR := /lib
|
|||
CONFDIR := /etc/apk
|
||||
MANDIR := /usr/share/man
|
||||
DOCDIR := /usr/share/doc/apk
|
||||
LUA_LIBDIR := /usr/lib/lua/5.1
|
||||
|
||||
export DESTDIR SBINDIR LIBDIR CONFDIR MANDIR DOCDIR
|
||||
export DESTDIR SBINDIR LIBDIR CONFDIR MANDIR DOCDIR LUA_LIBDIR
|
||||
|
||||
##
|
||||
# Top-level rules and targets
|
||||
|
|
12
src/Makefile
12
src/Makefile
|
@ -8,6 +8,11 @@ shlibs-y += libapk.so
|
|||
libapk.so-objs := common.o state.o database.o package.o archive.o \
|
||||
version.o io.o url.o gunzip.o blob.o hash.o print.o
|
||||
|
||||
shlibs-y += apk.so
|
||||
apk.so-objs := lua-apk.o
|
||||
CFLAGS_lua-apk.o := -DAPK_VERSION=\"$(FULL_VERSION)\"
|
||||
LIBS_apk.so := -L$(obj) -llua -lapk
|
||||
|
||||
progs-y += apk
|
||||
apk-objs := apk.o add.o del.o fix.o update.o info.o \
|
||||
search.o upgrade.o cache.o ver.o index.o fetch.o \
|
||||
|
@ -30,8 +35,11 @@ LIBS := -Wl,--as-needed \
|
|||
|
||||
$(obj)/apk: $(obj)/libapk.so
|
||||
|
||||
install: $(obj)/apk $(obj)/libapk.so
|
||||
$(INSTALLDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR)
|
||||
$(obj)/apk.so: $(obj)/libapk.so
|
||||
|
||||
install: $(obj)/apk $(obj)/libapk.so $(obj)/apk.so
|
||||
$(INSTALLDIR) $(addprefix $(DESTDIR),$(SBINDIR) $(LIBDIR) $(LUA_LIBDIR))
|
||||
$(INSTALL) $(obj)/apk $(DESTDIR)$(SBINDIR)
|
||||
$(INSTALL) $(obj)/libapk.so $(DESTDIR)$(LIBDIR)
|
||||
$(INSTALL) $(obj)/apk.so $(DESTDIR)$(LUA_LIBDIR)
|
||||
|
||||
|
|
|
@ -0,0 +1,64 @@
|
|||
#include <lua.h>
|
||||
#include <lualib.h>
|
||||
#include <lauxlib.h>
|
||||
|
||||
#include "apk_defines.h"
|
||||
#include "apk_version.h"
|
||||
#include "apk_blob.h"
|
||||
|
||||
#define LIBNAME "apk"
|
||||
|
||||
int apk_verbosity;
|
||||
unsigned int apk_flags;
|
||||
|
||||
/* version_validate(verstr) */
|
||||
/* returns boolean */
|
||||
static int Pversion_validate(lua_State *L)
|
||||
{
|
||||
apk_blob_t ver;
|
||||
ver.ptr = (char *)luaL_checklstring(L, 1, &ver.len);
|
||||
lua_pushboolean(L, apk_version_validate(ver));
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* version_compare(verstr1, verstr2)
|
||||
returns either '<', '=' or '>'
|
||||
*/
|
||||
static int Pversion_compare(lua_State *L)
|
||||
{
|
||||
apk_blob_t a, b;
|
||||
a.ptr = (char *)luaL_checklstring(L, 1, &a.len);
|
||||
b.ptr = (char *)luaL_checklstring(L, 2, &b.len);
|
||||
lua_pushstring(L, apk_version_op_string(apk_version_compare_blob(a, b)));
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* version_is_less(verstr1, verstr2)
|
||||
returns either '<', '=' or '>'
|
||||
*/
|
||||
static int Pversion_is_less(lua_State *L)
|
||||
{
|
||||
apk_blob_t a, b;
|
||||
a.ptr = (char *)luaL_checklstring(L, 1, &a.len);
|
||||
b.ptr = (char *)luaL_checklstring(L, 2, &b.len);
|
||||
lua_pushboolean(L, apk_version_compare_blob(a, b) == APK_VERSION_LESS);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
static const luaL_reg R[] = {
|
||||
{"version_validate", Pversion_validate},
|
||||
{"version_compare", Pversion_compare},
|
||||
{"version_is_less", Pversion_is_less},
|
||||
{NULL, NULL}
|
||||
};
|
||||
|
||||
LUALIB_API int luaopen_apk(lua_State *L)
|
||||
{
|
||||
luaL_register(L, LIBNAME, R);
|
||||
lua_pushliteral(L, "version");
|
||||
lua_pushliteral(L, APK_VERSION);
|
||||
lua_settable(L, -3);
|
||||
return 1;
|
||||
}
|
||||
|
Loading…
Reference in New Issue