Fix init.plugin.lua/init.plugin.luau not being supported (#1252)

This commit is contained in:
Ken Loeffler
2026-06-07 15:50:04 -07:00
committed by GitHub
parent 15939b1647
commit 444dc11b26
17 changed files with 70 additions and 1 deletions

View File

@@ -39,6 +39,7 @@ Making a new release? Simply add the new header with the version and date undern
* Fixed a bug where the notification timeout thread would fail to cancel on unmount ([#1211])
* Added a "Forget" option to the sync reminder notification to avoid being reminded for that place in the future ([#1215])
* Improves relative path calculation for sourcemap generation to avoid issues with Windows UNC paths. ([#1217])
* Fixed missing support for init.plugin.lua and init.plugin.luau. ([#1252])
* Add support for gitignore-style negation in `globIgnorePaths` and syncback's `ignorePaths` ([#1256])
* Fixed the sync fallback scrambling sibling order; replacements are now re-parented ancestors-first and in their original child order. ([#1265])
* Instances that share a name and class are now robustly matched on resync by comparing their properties, instead of relying on child order alone. ([#1266])
@@ -52,6 +53,7 @@ Making a new release? Simply add the new header with the version and date undern
[#1211]: https://github.com/rojo-rbx/rojo/pull/1211
[#1215]: https://github.com/rojo-rbx/rojo/pull/1215
[#1217]: https://github.com/rojo-rbx/rojo/pull/1217
[#1252]: https://github.com/rojo-rbx/rojo/pull/1252
[#1256]: https://github.com/rojo-rbx/rojo/pull/1256
[#1265]: https://github.com/rojo-rbx/rojo/pull/1265
[#1266]: https://github.com/rojo-rbx/rojo/pull/1266

View File

@@ -0,0 +1,27 @@
---
source: tests/tests/build.rs
expression: contents
---
<roblox version="4">
<Item class="Folder" referent="0">
<Properties>
<string name="Name">plugin_init</string>
</Properties>
<Item class="Script" referent="1">
<Properties>
<string name="Name">lua</string>
<token name="RunContext">3</token>
<string name="Source"><![CDATA[return "From folder/lua/init.plugin.lua"
]]></string>
</Properties>
</Item>
<Item class="Script" referent="2">
<Properties>
<string name="Name">luau</string>
<token name="RunContext">3</token>
<string name="Source"><![CDATA[return "From folder/luau/init.plugin.luau"
]]></string>
</Properties>
</Item>
</Item>
</roblox>

View File

@@ -0,0 +1,6 @@
{
"name": "plugin_init",
"tree": {
"$path": "folder"
}
}

View File

@@ -0,0 +1 @@
return "From folder/lua/init.plugin.lua"

View File

@@ -0,0 +1 @@
return "From folder/luau/init.plugin.luau"

View File

@@ -72,6 +72,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"),
];

View File

@@ -182,6 +182,7 @@ pub fn syncback_lua_init<'sync>(
ScriptType::Server => "init.server.luau",
ScriptType::Client => "init.client.luau",
ScriptType::Module => "init.luau",
ScriptType::Plugin => "init.plugin.luau",
_ => anyhow::bail!("syncback is not yet implemented for {script_type:?}"),
});

View File

@@ -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
)

View File

@@ -15,6 +15,8 @@ metadata:
- /root/init.server.luau
- /root/init.client.lua
- /root/init.client.luau
- /root/init.plugin.lua
- /root/init.plugin.luau
- /root/init.csv
- /root/init.meta.json
- /root/init.meta.jsonc

View File

@@ -15,6 +15,8 @@ metadata:
- /root/init.server.luau
- /root/init.client.lua
- /root/init.client.luau
- /root/init.plugin.lua
- /root/init.plugin.luau
- /root/init.csv
- /root/init.meta.json
- /root/init.meta.jsonc

View File

@@ -15,6 +15,8 @@ metadata:
- /foo/init.server.luau
- /foo/init.client.lua
- /foo/init.client.luau
- /foo/init.plugin.lua
- /foo/init.plugin.luau
- /foo/init.csv
- /foo/init.meta.json
- /foo/init.meta.jsonc

View File

@@ -15,6 +15,8 @@ metadata:
- /foo/init.server.luau
- /foo/init.client.lua
- /foo/init.client.luau
- /foo/init.plugin.lua
- /foo/init.plugin.luau
- /foo/init.csv
- /foo/init.meta.json
- /foo/init.meta.jsonc
@@ -40,6 +42,8 @@ children:
- /foo/Child/init.server.luau
- /foo/Child/init.client.lua
- /foo/Child/init.client.luau
- /foo/Child/init.plugin.lua
- /foo/Child/init.plugin.luau
- /foo/Child/init.csv
- /foo/Child/init.meta.json
- /foo/Child/init.meta.jsonc

View File

@@ -15,6 +15,8 @@ metadata:
- /root/init.server.luau
- /root/init.client.lua
- /root/init.client.luau
- /root/init.plugin.lua
- /root/init.plugin.luau
- /root/init.csv
- /root/init.meta.json
- /root/init.meta.jsonc

View File

@@ -15,6 +15,8 @@ metadata:
- /root/init.server.luau
- /root/init.client.lua
- /root/init.client.luau
- /root/init.plugin.lua
- /root/init.plugin.luau
- /root/init.csv
- /root/init.meta.json
- /root/init.meta.jsonc

View File

@@ -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")
}

View File

@@ -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,

View File

@@ -65,6 +65,7 @@ gen_build_tests! {
no_name_default_project,
no_name_project,
no_name_top_level_project,
plugin_init,
}
fn run_build_test(test_name: &str) {