mirror of
https://github.com/extism/extism.git
synced 2026-01-09 13:57:55 -05:00
refactor: improve library search
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user