From b9b6bd149078a8dbba0b9b725995c1929a9be7bb Mon Sep 17 00:00:00 2001 From: valerio Date: Tue, 10 Mar 2026 22:14:27 +0100 Subject: [PATCH] FEAT: Launch with custom config location FEAT: Generate banner FEAT: Start blender with banner --- .gitignore | 10 +++ .prettierignore | 9 +++ .prettierrc | 17 +++++ .vscode/extensions.json | 9 +++ .vscode/settings.json | 3 + bun.lock | 5 ++ package.json | 1 + src-tauri/src/lib.rs | 18 +++++- src/lib/components/VersionCard.svelte | 14 +++-- src/lib/file_utils.js | 89 +++++++++++++++++++++------ src/lib/library.js | 79 ++++++++++++++++++++++-- 11 files changed, 224 insertions(+), 30 deletions(-) create mode 100644 .gitignore create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6635cf5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..7d74fe2 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,9 @@ +# Package Managers +package-lock.json +pnpm-lock.yaml +yarn.lock +bun.lock +bun.lockb + +# Miscellaneous +/static/ diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..b513262 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,17 @@ +{ + "useTabs": true, + "singleQuote": true, + "trailingComma": "none", + "printWidth": 100, + "plugins": [ + "prettier-plugin-svelte" + ], + "overrides": [ + { + "files": "*.svelte", + "options": { + "parser": "svelte" + } + } + ] +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..cd26a05 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,9 @@ +{ + "recommendations": [ + "svelte.svelte-vscode", + "tauri-apps.tauri-vscode", + "rust-lang.rust-analyzer", + "esbenp.prettier-vscode", + "dbaeumer.vscode-eslint" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..2f86c50 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "svelte.enable-ts-plugin": true +} diff --git a/bun.lock b/bun.lock index 0b7816d..75e0fa4 100644 --- a/bun.lock +++ b/bun.lock @@ -16,6 +16,7 @@ "@tauri-apps/plugin-upload": "~2", "@tauri-apps/plugin-window-state": "~2", "@webtui/css": "^0.1.6", + "figlet": "^1.11.0", "svelte-splitpanes": "^8.0.12", "svelte-tabs": "^1.1.0", }, @@ -283,6 +284,8 @@ "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], + "commander": ["commander@14.0.3", "", {}, "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw=="], + "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], "cookie": ["cookie@0.6.0", "", {}, "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw=="], @@ -335,6 +338,8 @@ "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], + "figlet": ["figlet@1.11.0", "", { "dependencies": { "commander": "^14.0.0" }, "bin": { "figlet": "bin/index.js" } }, "sha512-EEx3OS/l2bFqcUNN2NM9FPJp8vAMrgbCxsbl2hbcJNNxOEwVe3mEzrhan7TbJQViZa8mMqhihlbCaqD+LyYKTQ=="], + "file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="], "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], diff --git a/package.json b/package.json index 2578d05..a798dc0 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "@tauri-apps/plugin-upload": "~2", "@tauri-apps/plugin-window-state": "~2", "@webtui/css": "^0.1.6", + "figlet": "^1.11.0", "svelte-splitpanes": "^8.0.12", "svelte-tabs": "^1.1.0" }, diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index f69eaf9..2a16006 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -1,5 +1,6 @@ // Learn more about Tauri commands at https://tauri.app/develop/calling-rust/ +use std::collections::HashMap; use std::fs::File; use std::path::Path; @@ -50,13 +51,24 @@ fn strip_single_top_level_directory(target_dir: &Path) -> Result) -> Result { +fn launch_binary( + path: String, + args: Vec, + env: Option>, +) -> Result { use std::process::{Command, Stdio}; - Command::new(path) + let mut command = Command::new(path); + command .args(args) .stdin(Stdio::null()) .stdout(Stdio::null()) - .stderr(Stdio::null()) + .stderr(Stdio::null()); + + if let Some(env_vars) = env { + command.envs(env_vars); + } + + command .spawn() .map(|_| "Launched".into()) .map_err(|e| e.to_string()) diff --git a/src/lib/components/VersionCard.svelte b/src/lib/components/VersionCard.svelte index 67d3b86..6f5982b 100644 --- a/src/lib/components/VersionCard.svelte +++ b/src/lib/components/VersionCard.svelte @@ -1,6 +1,10 @@