refactor: improve library search

This commit is contained in:
zach
2022-08-26 06:37:14 -07:00
parent afe66b0b1c
commit 70d7e5bdc3

View File

@@ -4,19 +4,40 @@ import url from 'url';
const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
var lib = ffi.Library(
'libextism',
{
extism_plugin_register: ['int32', ['string', 'uint64', 'bool']],
extism_error: ['char*', ['int32']],
extism_call: ['int32', ['int32', 'string', 'string', 'uint64']],
extism_output_length: ['uint64', ['int32']],
extism_output_get: ['void', ['int32', 'char*', 'uint64']],
extism_log_file: ['bool', ['string', 'char*']],
extism_plugin_config: ['void', ['int32', 'char*', 'uint64']],
}
)
let _functions = {
extism_plugin_register: ['int32', ['string', 'uint64', 'bool']],
extism_error: ['char*', ['int32']],
extism_call: ['int32', ['int32', 'string', 'string', 'uint64']],
extism_output_length: ['uint64', ['int32']],
extism_output_get: ['void', ['int32', 'char*', 'uint64']],
extism_log_file: ['bool', ['string', 'char*']],
extism_plugin_config: ['void', ['int32', 'char*', 'uint64']],
};
function locate(paths) {
for (var i = 0; i < paths.length; i++) {
try {
return ffi.Library(
path.join(paths[i], 'libextism'),
_functions
)
} catch (exn) {
continue;
}
}
throw "Unable to locate libextism";
}
var searchPath =
[__dirname, "/usr/local/lib", "/usr/lib", path.join(process.env.HOME, ".local")]
if (process.env.EXTISM_PATH) {
searchPath.unshift(path.join(process.env.EXTISM_PATH, "lib"));
}
var lib = locate(searchPath);
export function set_log_file(filename, level = null) {
lib.extism_log_file(filename, level)
}