aboutsummaryrefslogtreecommitdiff
path: root/src-tauri
diff options
context:
space:
mode:
authorGeckoEidechse <40122905+GeckoEidechse@users.noreply.github.com>2023-02-05 15:53:34 +0100
committerGitHub <noreply@github.com>2023-02-05 15:53:34 +0100
commit802d7dfee77a3f58ee14a7ef6e2454e5aae62cbb (patch)
tree1c63107fafa7b535acd1a31a2e317e7535f85b62 /src-tauri
parent24cabc6019e702ac888a33311532a9832863b572 (diff)
downloadFlightCore-802d7dfee77a3f58ee14a7ef6e2454e5aae62cbb.tar.gz
FlightCore-802d7dfee77a3f58ee14a7ef6e2454e5aae62cbb.zip
feat: Auto-generate TS bindings (#140)
* feat: Initial trial to auto-generate TS bindings That way instead of manually duplicating code, we can just run `cargo test` to generate them. * fix: Update forgotten imports * refactor: Move FlightCoreVersion to autogen bind TypeScript binding autogenerated from Rust code * refactor: Move ReleaseInfo to autogen binding TypeScript binding autogenerated from Rust code * docs: Explain how to generate TS binds from Rust * feat: Check for binding changes in CI Checks for uncommitted binding changes in CI and fails if they differ * style: Formatting fixes
Diffstat (limited to 'src-tauri')
-rw-r--r--src-tauri/Cargo.lock30
-rw-r--r--src-tauri/Cargo.toml2
-rw-r--r--src-tauri/bindings/FlightCoreVersion.ts3
-rw-r--r--src-tauri/bindings/NorthstarMod.ts3
-rw-r--r--src-tauri/bindings/ReleaseInfo.ts3
-rw-r--r--src-tauri/src/github/release_notes.rs7
-rw-r--r--src-tauri/src/lib.rs4
7 files changed, 49 insertions, 3 deletions
diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock
index 0376d592..aea73676 100644
--- a/src-tauri/Cargo.lock
+++ b/src-tauri/Cargo.lock
@@ -3,6 +3,12 @@
version = 3
[[package]]
+name = "Inflector"
+version = "0.11.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3"
+
+[[package]]
name = "addr2line"
version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -100,6 +106,7 @@ dependencies = [
"tauri-build",
"tauri-plugin-store",
"tokio",
+ "ts-rs",
"zip",
]
@@ -4167,6 +4174,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642"
[[package]]
+name = "ts-rs"
+version = "6.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4added4070a4fdf9df03457206cd2e4b12417c8560a2954d91ffcbe60177a56a"
+dependencies = [
+ "thiserror",
+ "ts-rs-macros",
+]
+
+[[package]]
+name = "ts-rs-macros"
+version = "6.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f807fdb3151fee75df7485b901a89624358cd07a67a8fb1a5831bf5a07681ff"
+dependencies = [
+ "Inflector",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "termcolor",
+]
+
+[[package]]
name = "typenum"
version = "1.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
index dcdf8d3b..dbd6f605 100644
--- a/src-tauri/Cargo.toml
+++ b/src-tauri/Cargo.toml
@@ -44,6 +44,8 @@ async-recursion = "1.0.0"
game-scanner = "1.1.4"
# For parsing timestamps
chrono = "0.4.23"
+# TypeScript bindings
+ts-rs = "6.1"
[features]
# by default Tauri runs in production mode
diff --git a/src-tauri/bindings/FlightCoreVersion.ts b/src-tauri/bindings/FlightCoreVersion.ts
new file mode 100644
index 00000000..9017a840
--- /dev/null
+++ b/src-tauri/bindings/FlightCoreVersion.ts
@@ -0,0 +1,3 @@
+// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
+
+export interface FlightCoreVersion { tag_name: string, published_at: string, } \ No newline at end of file
diff --git a/src-tauri/bindings/NorthstarMod.ts b/src-tauri/bindings/NorthstarMod.ts
new file mode 100644
index 00000000..ed9d9297
--- /dev/null
+++ b/src-tauri/bindings/NorthstarMod.ts
@@ -0,0 +1,3 @@
+// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
+
+export interface NorthstarMod { name: string, thunderstore_mod_string: string | null, enabled: boolean, directory: string, } \ No newline at end of file
diff --git a/src-tauri/bindings/ReleaseInfo.ts b/src-tauri/bindings/ReleaseInfo.ts
new file mode 100644
index 00000000..249f986e
--- /dev/null
+++ b/src-tauri/bindings/ReleaseInfo.ts
@@ -0,0 +1,3 @@
+// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
+
+export interface ReleaseInfo { name: string, published_at: string, body: string, } \ No newline at end of file
diff --git a/src-tauri/src/github/release_notes.rs b/src-tauri/src/github/release_notes.rs
index 758f7ace..6dee4576 100644
--- a/src-tauri/src/github/release_notes.rs
+++ b/src-tauri/src/github/release_notes.rs
@@ -1,15 +1,18 @@
use crate::constants::APP_USER_AGENT;
use serde::{Deserialize, Serialize};
use std::vec::Vec;
+use ts_rs::TS;
-#[derive(Serialize, Deserialize, Debug, Clone)]
+#[derive(Serialize, Deserialize, Debug, Clone, TS)]
+#[ts(export)]
pub struct ReleaseInfo {
pub name: String,
pub published_at: String,
pub body: String,
}
-#[derive(Serialize, Deserialize, Debug, Clone)]
+#[derive(Serialize, Deserialize, Debug, Clone, TS)]
+#[ts(export)]
pub struct FlightCoreVersion {
tag_name: String,
published_at: String,
diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs
index 62cc07ae..e43e5935 100644
--- a/src-tauri/src/lib.rs
+++ b/src-tauri/src/lib.rs
@@ -13,6 +13,7 @@ use platform_specific::linux;
use serde::{Deserialize, Serialize};
use sysinfo::SystemExt;
+use ts_rs::TS;
use zip::ZipArchive;
use northstar::get_northstar_version_number;
@@ -31,7 +32,8 @@ pub struct GameInstall {
pub install_type: InstallType,
}
-#[derive(Serialize, Deserialize, Debug, Clone)]
+#[derive(Serialize, Deserialize, Debug, Clone, TS)]
+#[ts(export)]
pub struct NorthstarMod {
pub name: String,
pub thunderstore_mod_string: Option<String>,