mumuav/
lib.rs

1// src/lib.rs
2//
3// av-mumu: Audio/Video (AV) tools plugin for Lava/MuMu.
4// This file exposes the plugin entry point and wires public registrations.
5
6use std::ffi::c_void;
7use mumu::parser::interpreter::Interpreter;
8
9// Public share modules (with their own internal registries/utilities).
10pub mod share;
11
12// User-visible registration surface.
13mod register;
14
15fn verbose(interp: &Interpreter) -> bool {
16    interp.is_verbose() || std::env::var_os("LAVA_VERBOSE").is_some()
17}
18
19#[export_name = "Cargo_lock"]
20pub unsafe extern "C" fn cargo_lock(interp_ptr: *mut c_void, _extra: *const c_void) -> i32 {
21    if interp_ptr.is_null() {
22        return 1;
23    }
24    let interp = &mut *(interp_ptr as *mut Interpreter);
25
26    if verbose(interp) {
27        eprintln!("[av] bridging av-mumu plugin …");
28    }
29
30    // Register all user-facing functions.
31    register::register_all(interp);
32
33    if verbose(interp) {
34        eprintln!("[av] ready");
35    }
36    0
37}