mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-11 15:04:52 +09:00
Add module export detection (#505)
Allow modules to include a module_exports.lua file in their root which will cause the file save/modules/module_name.lua to be generated pointing to the exports file.
This commit is contained in:
1 parent
ee105e0e28
commit
a4893751e9
3 files changed
+31
No files matched your search
@@ -47,6 +47,12 @@ export class SaveModule {
|
||||
if (entry.isFile()) {
|
||||
let savePath = SaveModule.moduleFilePath(relativePath, this.info.name);
|
||||
this.files.set(savePath, await fs.readFile(fsPath));
|
||||
if (relativePath == "module_exports.lua") {
|
||||
this.files.set(
|
||||
`modules/${this.info.name}.lua`,
|
||||
Buffer.from(`return require("modules/${this.info.name}/module_exports")`, "utf-8")
|
||||
);
|
||||
}
|
||||
|
||||
} else if (entry.isDirectory()) {
|
||||
dirs.push([fsPath, relativePath]);
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
-- module_exports
|
||||
@@ -28,6 +28,30 @@ describe("host/patch", function() {
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
describe("loadFiles()", function() {
|
||||
const testModule = new patch.SaveModule(new lib.ModuleInfo("test", "1.0.0"));
|
||||
const referenceFiles = new Map([
|
||||
["modules/test/test.lua", "-- test\n"],
|
||||
["modules/test/module_exports.lua", "-- module_exports\n"],
|
||||
["locale/en/test.cfg", "module-test=A Test\n"],
|
||||
["locale/en/test-locale.cfg", "module-test-locale=Test Locale\n"],
|
||||
["modules/test.lua", "return require(\"modules/test/module_exports\")"],
|
||||
]);
|
||||
before(async function() {
|
||||
await testModule.loadFiles("test/file/modules/test");
|
||||
});
|
||||
it("Should read the contents of all files in a module", function() {
|
||||
assert.equal(testModule.files.size, referenceFiles.size);
|
||||
for (let [relativePath, contents] of referenceFiles) {
|
||||
if (!testModule.files.has(relativePath)) {
|
||||
assert.fail(`Module is missing file: ${relativePath}`);
|
||||
} else {
|
||||
assert.equal(testModule.files.get(relativePath).toString("utf-8"), contents);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe("generateLoader()", function() {
|
||||
|
||||
Reference in new issue
Block a user