From 94bd7ed26f2c0e81d14018ece335afd45a4115ca Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Sat, 1 Oct 2022 19:16:32 +0200
Subject: [PATCH] MODULE: Add base files for repo_rs module

---
 src/main/server.c                           |  2 +
 src/module/module_repo_rs.c                 | 68 +++++++++++++++++++++
 src/rust/liblektor-rs/src/lib.rs            |  1 +
 src/rust/liblektor-rs/src/module/mod.rs     |  1 +
 src/rust/liblektor-rs/src/module/repo_rs.rs |  0
 5 files changed, 72 insertions(+)
 create mode 100644 src/module/module_repo_rs.c
 create mode 100644 src/rust/liblektor-rs/src/module/mod.rs
 create mode 100644 src/rust/liblektor-rs/src/module/repo_rs.rs

diff --git a/src/main/server.c b/src/main/server.c
index a1de40db..78d6faec 100644
--- a/src/main/server.c
+++ b/src/main/server.c
@@ -19,6 +19,7 @@
 REG_DECLARE(sdl2_reg)
 REG_DECLARE(qt_window_reg)
 REG_DECLARE(repo_reg)
+REG_DECLARE(repo_rs_reg)
 #endif
 
 /* TODO: Donesn't work, maybe stdin is no longer valid at the point where that
@@ -38,6 +39,7 @@ main(int argc, char *argv[])
     REG_ADD(launch_caching)
     REG_ADD(database_upgrade_scheme)
 #if defined(LKT_STATIC_MODULE)
+    REG_REGISTER("repo_rs", repo_rs_reg)
     REG_REGISTER("repo", repo_reg)
     REG_REGISTER("sdl2", sdl2_reg)
     REG_REGISTER("qt", qt_window_reg)
diff --git a/src/module/module_repo_rs.c b/src/module/module_repo_rs.c
new file mode 100644
index 00000000..45c1cdb2
--- /dev/null
+++ b/src/module/module_repo_rs.c
@@ -0,0 +1,68 @@
+#define __LKT_MODULE_MAIN_SOURCE__
+#include <lektor/lktmodule.h>
+#include <lektor/stb/ds.h>
+#include <lektor/internal/worker.h>
+
+/**********************
+ * Function from RUST *
+ **********************/
+
+typedef module_repo_rs_internal;
+
+/********************
+ * Export functions *
+ ********************/
+
+PRIVATE_FUNCTION int
+mod_new(va_list *va) {
+    va_list copy;
+    struct module_repo_rs_internal **repo;
+    va_copy(copy, *va);
+    repo = (struct module_repo_rs_internal **)va_arg(copy, void **);
+
+    va_end(copy);
+    return 1;
+}
+
+PRIVATE_FUNCTION int
+mod_free(va_list *va) {
+    return 1;
+}
+
+PRIVATE_FUNCTION int
+mod_close(va_list *va) {
+    return 1;
+}
+
+PRIVATE_FUNCTION int
+mod_update(va_list *va) {
+    return 1;
+}
+
+PRIVATE_FUNCTION int
+mod_dry_update(va_list *va) {
+    return 1;
+}
+
+PRIVATE_FUNCTION int
+mod_rescan(va_list *va) {
+    return 1;
+}
+
+PRIVATE_FUNCTION int
+mod_import(va_list *va) {
+    return 1;
+}
+
+REG_BEGIN(repo_rs_reg)
+REG_ADD_NAMED("new", mod_new)               /* Create the module             */
+REG_ADD_NAMED("free", mod_free)             /* Close and free ressources     */
+REG_ADD_NAMED("close", mod_close)           /* Stop the module               */
+REG_ADD_NAMED("update", mod_update)         /* Update from kurisu            */
+REG_ADD_NAMED("dry-update", mod_dry_update) /* Update avail kara from kurisu */
+REG_ADD_NAMED("rescan", mod_rescan)         /* Rescan from hard drive        */
+REG_ADD_NAMED("import", mod_import)         /* Import favorites from kurisu  */
+REG_END()
+#if !defined(LKT_STATIC_MODULE)
+REG_EXPORT(repo_rs_reg)
+#endif
diff --git a/src/rust/liblektor-rs/src/lib.rs b/src/rust/liblektor-rs/src/lib.rs
index 40c8ae63..641e7637 100644
--- a/src/rust/liblektor-rs/src/lib.rs
+++ b/src/rust/liblektor-rs/src/lib.rs
@@ -1,5 +1,6 @@
 #![allow(dead_code)]
 
+mod module;
 mod database;
 mod mkv;
 
diff --git a/src/rust/liblektor-rs/src/module/mod.rs b/src/rust/liblektor-rs/src/module/mod.rs
new file mode 100644
index 00000000..0d27c386
--- /dev/null
+++ b/src/rust/liblektor-rs/src/module/mod.rs
@@ -0,0 +1 @@
+pub(crate) mod repo_rs;
diff --git a/src/rust/liblektor-rs/src/module/repo_rs.rs b/src/rust/liblektor-rs/src/module/repo_rs.rs
new file mode 100644
index 00000000..e69de29b
-- 
GitLab