- owlry-core/manifest: add entry_point alias for entry field, add ProviderSpec struct for [[providers]] array, change default entry to main.lua - owlry-lua/manifest: add ProviderDecl struct and providers: Vec<ProviderDecl> for [[providers]] support - owlry-lua/loader: fall back to manifest [[providers]] when script has no API registrations; fall back to global refresh() for manifest-declared providers - owlry-lua/api: expose call_global_refresh() that calls the top-level Lua refresh() function directly - owlry/plugin_commands: update create templates to emit new format: entry_point instead of entry, [[providers]] instead of [provides], main.rn/main.lua instead of init.rn/init.lua, Rune uses Item::new() builder pattern, Lua uses standalone refresh() function - cmd_validate: accept [[providers]] declarations as a valid provides source
58 lines
1.7 KiB
Rust
58 lines
1.7 KiB
Rust
//! Lua API implementations for plugins
|
|
//!
|
|
//! This module provides the `owlry` global table and its submodules
|
|
//! that plugins can use to interact with owlry.
|
|
|
|
mod provider;
|
|
mod utils;
|
|
|
|
use mlua::{Lua, Result as LuaResult};
|
|
use owlry_plugin_api::PluginItem;
|
|
|
|
use crate::loader::ProviderRegistration;
|
|
|
|
/// Register all owlry APIs in the Lua runtime
|
|
pub fn register_apis(lua: &Lua, plugin_dir: &std::path::Path, plugin_id: &str) -> LuaResult<()> {
|
|
let globals = lua.globals();
|
|
|
|
// Create the main owlry table
|
|
let owlry = lua.create_table()?;
|
|
|
|
// Register utility APIs (log, path, fs, json)
|
|
utils::register_log_api(lua, &owlry)?;
|
|
utils::register_path_api(lua, &owlry, plugin_dir)?;
|
|
utils::register_fs_api(lua, &owlry, plugin_dir)?;
|
|
utils::register_json_api(lua, &owlry)?;
|
|
|
|
// Register provider API
|
|
provider::register_provider_api(lua, &owlry)?;
|
|
|
|
// Set owlry as global
|
|
globals.set("owlry", owlry)?;
|
|
|
|
// Suppress unused warnings
|
|
let _ = plugin_id;
|
|
|
|
Ok(())
|
|
}
|
|
|
|
/// Get provider registrations from the Lua runtime
|
|
pub fn get_provider_registrations(lua: &Lua) -> LuaResult<Vec<ProviderRegistration>> {
|
|
provider::get_registrations(lua)
|
|
}
|
|
|
|
/// Call a provider's refresh function
|
|
pub fn call_refresh(lua: &Lua, provider_name: &str) -> LuaResult<Vec<PluginItem>> {
|
|
provider::call_refresh(lua, provider_name)
|
|
}
|
|
|
|
/// Call a provider's query function
|
|
pub fn call_query(lua: &Lua, provider_name: &str, query: &str) -> LuaResult<Vec<PluginItem>> {
|
|
provider::call_query(lua, provider_name, query)
|
|
}
|
|
|
|
/// Call the global `refresh()` function (for manifest-declared providers)
|
|
pub fn call_global_refresh(lua: &Lua) -> LuaResult<Vec<PluginItem>> {
|
|
provider::call_global_refresh(lua)
|
|
}
|