From 01036fda351f5099b106b82d2158301b12e00592 Mon Sep 17 00:00:00 2001 From: kennethloeffler Date: Tue, 28 Apr 2026 17:22:30 -0700 Subject: [PATCH] Fix init.plugin.lua/init.plugin.luau not being supported --- src/snapshot_middleware/dir.rs | 2 ++ src/snapshot_middleware/mod.rs | 13 ++++++++++++- src/syncback/file_names.rs | 2 ++ src/syncback/mod.rs | 1 + 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/snapshot_middleware/dir.rs b/src/snapshot_middleware/dir.rs index fb444c37..201f5620 100644 --- a/src/snapshot_middleware/dir.rs +++ b/src/snapshot_middleware/dir.rs @@ -74,6 +74,8 @@ pub fn snapshot_dir_no_meta( normalized_path.join("init.server.luau"), normalized_path.join("init.client.lua"), normalized_path.join("init.client.luau"), + normalized_path.join("init.plugin.lua"), + normalized_path.join("init.plugin.luau"), normalized_path.join("init.csv"), ]; diff --git a/src/snapshot_middleware/mod.rs b/src/snapshot_middleware/mod.rs index 9eec5f83..fadce5f6 100644 --- a/src/snapshot_middleware/mod.rs +++ b/src/snapshot_middleware/mod.rs @@ -91,7 +91,9 @@ pub fn snapshot_from_vfs( // TODO: Is this even necessary anymore? match file_name { "init.server.luau" | "init.server.lua" | "init.client.luau" | "init.client.lua" - | "init.luau" | "init.lua" | "init.csv" => return Ok(None), + | "init.plugin.luau" | "init.plugin.lua" | "init.luau" | "init.lua" | "init.csv" => { + return Ok(None) + } _ => {} } @@ -124,6 +126,8 @@ fn get_dir_middleware<'path>( (Middleware::ServerScriptDir, "init.server.lua"), (Middleware::ClientScriptDir, "init.client.luau"), (Middleware::ClientScriptDir, "init.client.lua"), + (Middleware::PluginScriptDir, "init.plugin.lua"), + (Middleware::PluginScriptDir, "init.plugin.luau"), (Middleware::CsvDir, "init.csv"), ] }); @@ -205,6 +209,8 @@ pub enum Middleware { #[serde(skip_deserializing)] ClientScriptDir, #[serde(skip_deserializing)] + PluginScriptDir, + #[serde(skip_deserializing)] ModuleScriptDir, #[serde(skip_deserializing)] CsvDir, @@ -255,6 +261,9 @@ impl Middleware { Self::ClientScriptDir => { snapshot_lua_init(context, vfs, path, name, ScriptType::Client) } + Self::PluginScriptDir => { + snapshot_lua_init(context, vfs, path, name, ScriptType::Plugin) + } Self::ModuleScriptDir => { snapshot_lua_init(context, vfs, path, name, ScriptType::Module) } @@ -297,6 +306,7 @@ impl Middleware { Middleware::Dir => syncback_dir(snapshot), Middleware::ServerScriptDir => syncback_lua_init(ScriptType::Server, snapshot), Middleware::ClientScriptDir => syncback_lua_init(ScriptType::Client, snapshot), + Middleware::PluginScriptDir => syncback_lua_init(ScriptType::Plugin, snapshot), Middleware::ModuleScriptDir => syncback_lua_init(ScriptType::Module, snapshot), Middleware::CsvDir => syncback_csv_init(snapshot), @@ -318,6 +328,7 @@ impl Middleware { Middleware::Dir | Middleware::ServerScriptDir | Middleware::ClientScriptDir + | Middleware::PluginScriptDir | Middleware::ModuleScriptDir | Middleware::CsvDir ) diff --git a/src/syncback/file_names.rs b/src/syncback/file_names.rs index 4653aabd..7654fed8 100644 --- a/src/syncback/file_names.rs +++ b/src/syncback/file_names.rs @@ -35,6 +35,7 @@ pub fn name_for_inst<'old>( | Middleware::CsvDir | Middleware::ServerScriptDir | Middleware::ClientScriptDir + | Middleware::PluginScriptDir | Middleware::ModuleScriptDir => Cow::Owned(new_inst.name.clone()), _ => { let extension = extension_for_middleware(middleware); @@ -78,6 +79,7 @@ pub fn extension_for_middleware(middleware: Middleware) -> &'static str { | Middleware::CsvDir | Middleware::ServerScriptDir | Middleware::ClientScriptDir + | Middleware::PluginScriptDir | Middleware::ModuleScriptDir => { unimplemented!("directory middleware requires special treatment") } diff --git a/src/syncback/mod.rs b/src/syncback/mod.rs index 5dc3028f..5373ba4f 100644 --- a/src/syncback/mod.rs +++ b/src/syncback/mod.rs @@ -359,6 +359,7 @@ pub fn get_best_middleware(snapshot: &SyncbackSnapshot) -> Middleware { middleware = match middleware { Middleware::ServerScript => Middleware::ServerScriptDir, Middleware::ClientScript => Middleware::ClientScriptDir, + Middleware::PluginScript => Middleware::PluginScriptDir, Middleware::ModuleScript => Middleware::ModuleScriptDir, Middleware::Csv => Middleware::CsvDir, Middleware::JsonModel | Middleware::Text => Middleware::Dir,