diff --git a/templates/decky/.gitignore b/templates/decky/.gitignore index 9e0f121..08fb4c6 100644 --- a/templates/decky/.gitignore +++ b/templates/decky/.gitignore @@ -42,7 +42,7 @@ yalc.lock .vscode/settings.json # ignore Rust compiler files -/backend-rs/target +/server/target backend /bin diff --git a/templates/decky/server/Cargo.toml b/templates/decky/server/Cargo.toml new file mode 100644 index 0000000..c8421da --- /dev/null +++ b/templates/decky/server/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "backend" # TODO replace with plugin name (also in build.sh) +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +usdpl-back = { version = "0.5.3", features = ["decky"] } + +# logging +log = "0.4" +simplelog = "0.12" + +[profile.release] +debug = false +strip = true +lto = true +codegen-units = 4 diff --git a/templates/decky/server/Cross.toml b/templates/decky/server/Cross.toml new file mode 100644 index 0000000..89ae1de --- /dev/null +++ b/templates/decky/server/Cross.toml @@ -0,0 +1,2 @@ +[build] +default-target = "x86_64-unknown-linux-gnu" diff --git a/templates/decky/server/build.sh b/templates/decky/server/build.sh new file mode 100755 index 0000000..d9b898f --- /dev/null +++ b/templates/decky/server/build.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +cargo build --release +mkdir ../bin +# TODO replace "backend" \/ with binary name +cp ./target/release/backend ../bin/backend diff --git a/templates/decky/server/src/main.rs b/templates/decky/server/src/main.rs new file mode 100644 index 0000000..b24ba09 --- /dev/null +++ b/templates/decky/server/src/main.rs @@ -0,0 +1,25 @@ +use simplelog::{WriteLogger, LevelFilter}; + +use usdpl_back::Instance; +use usdpl_back::core::serdes::Primitive; + +const PORT: u16 = 54321; // TODO replace with something unique + +const PACKAGE_NAME: &'static str = env!("CARGO_PKG_NAME"); +const PACKAGE_VERSION: &'static str = env!("CARGO_PKG_VERSION"); + +fn main() -> Result<(), ()> { + let log_filepath = format!("/tmp/{}.log", PACKAGE_NAME); + WriteLogger::init( + #[cfg(debug_assertions)]{LevelFilter::Debug}, + #[cfg(not(debug_assertions))]{LevelFilter::Info}, + Default::default(), + std::fs::File::create(&log_filepath).unwrap() + ).unwrap(); + + log::info!("Starting back-end ({} v{})", PACKAGE_NAME, PACKAGE_VERSION); + println!("Starting back-end ({} v{})", PACKAGE_NAME, PACKAGE_VERSION); + Instance::new(PORT) + .register("hello", |_: Vec| vec![format!("Hello {}", PACKAGE_NAME).into()]) + .run_blocking() +}