feat: bootstrap ShaCraft cross-platform launcher

This commit is contained in:
emil28092005
2026-09-06 00:14:29 +03:00
commit 4a1ab087c8
16 changed files with 6468 additions and 0 deletions
+4511
View File
File diff suppressed because it is too large Load Diff
+18
View File
@@ -0,0 +1,18 @@
[package]
name = "shacraft-launcher"
version = "0.1.0"
description = "ShaCraft Minecraft launcher"
authors = ["ShaCraft"]
edition = "2021"
[lib]
name = "shacraft_launcher_lib"
crate-type = ["staticlib", "cdylib", "rlib"]
[build-dependencies]
tauri-build = { version = "2", features = [] }
[dependencies]
serde = { version = "1", features = ["derive"] }
tauri = { version = "2", features = [] }
+3
View File
@@ -0,0 +1,3 @@
fn main() {
tauri_build::build()
}
+7
View File
@@ -0,0 +1,7 @@
{
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "main-window",
"description": "Minimal permissions for the ShaCraft main window.",
"windows": ["main"],
"permissions": ["core:default"]
}
+33
View File
@@ -0,0 +1,33 @@
use serde::Serialize;
use tauri::{AppHandle, Manager};
#[derive(Serialize)]
#[serde(rename_all = "camelCase")]
struct NativeHost {
platform: &'static str,
data_dir: String,
launcher_version: &'static str,
}
/// Returns non-sensitive environment information needed by the interface.
/// File access and child-process launching are deliberately not exposed yet.
#[tauri::command]
fn native_host(app: AppHandle) -> Result<NativeHost, String> {
let data_dir = app
.path()
.app_data_dir()
.map_err(|error| format!("Cannot resolve launcher data directory: {error}"))?;
Ok(NativeHost {
platform: std::env::consts::OS,
data_dir: data_dir.display().to_string(),
launcher_version: env!("CARGO_PKG_VERSION"),
})
}
pub fn run() {
tauri::Builder::default()
.invoke_handler(tauri::generate_handler![native_host])
.run(tauri::generate_context!())
.expect("error while running ShaCraft Launcher");
}
+5
View File
@@ -0,0 +1,5 @@
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
fn main() {
shacraft_launcher_lib::run()
}
+33
View File
@@ -0,0 +1,33 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "ShaCraft Launcher",
"version": "0.1.0",
"identifier": "ru.shacraft.launcher",
"build": {
"beforeDevCommand": "npm run dev",
"beforeBuildCommand": "npm run build",
"devUrl": "http://localhost:5173",
"frontendDist": "../dist"
},
"app": {
"windows": [
{
"title": "ShaCraft Launcher",
"width": 1280,
"height": 820,
"minWidth": 1040,
"minHeight": 680,
"decorations": false,
"transparent": false,
"resizable": true
}
],
"security": {
"csp": "default-src 'self'; img-src 'self' asset: http://asset.localhost data:; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; connect-src 'self' https://fonts.googleapis.com https://fonts.gstatic.com"
}
},
"bundle": {
"active": true,
"targets": "all"
}
}