Uploader no longer deletes your mods, extension rename now works, absolute path now works
This commit is contained in:
20
Cargo.lock
generated
20
Cargo.lock
generated
@ -2096,6 +2096,15 @@ dependencies = [
|
||||
"bytemuck",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "same-file"
|
||||
version = "1.0.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
|
||||
dependencies = [
|
||||
"winapi-util",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "scoped-tls"
|
||||
version = "1.0.1"
|
||||
@ -2495,6 +2504,16 @@ version = "0.9.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
|
||||
|
||||
[[package]]
|
||||
name = "walkdir"
|
||||
version = "2.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
|
||||
dependencies = [
|
||||
"same-file",
|
||||
"winapi-util",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasi"
|
||||
version = "0.11.0+wasi-snapshot-preview1"
|
||||
@ -3185,6 +3204,7 @@ dependencies = [
|
||||
"native-dialog",
|
||||
"open",
|
||||
"steamworks",
|
||||
"walkdir",
|
||||
"winres",
|
||||
]
|
||||
|
||||
|
@ -16,6 +16,7 @@ native-dialog = "0.6.3"
|
||||
image = "0.24.7"
|
||||
open = "5.1.2"
|
||||
fs_extra = "1.3.0"
|
||||
walkdir = "2.5.0"
|
||||
|
||||
[build-dependencies]
|
||||
winres = "0.1.12"
|
||||
|
@ -6,6 +6,8 @@ use std::thread::Thread;
|
||||
use std::time::Duration;
|
||||
use steamworks::{Client, PublishedFileId, QueryResult, QueryResults, SingleClient, SteamError};
|
||||
use std::fs;
|
||||
use std::path::Path;
|
||||
use walkdir::WalkDir;
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct SingleClientExecutor {
|
||||
@ -200,34 +202,58 @@ impl WorkshopClient {
|
||||
item_info: ItemInfo,
|
||||
) -> Result<(PublishedFileId, bool), SteamError> {
|
||||
let temp_dir = std::env::temp_dir(); // Get the temporary directory
|
||||
let mut temp_folder = temp_dir.join("wani_workshop_folder"); // Create a specific folder within temporary directory
|
||||
let temp_folder = temp_dir.join("wani_workshop_folder"); // Create a specific folder within temporary directory
|
||||
let mut full_folder = temp_folder.join("mods");
|
||||
|
||||
// Create the folders if they doesn't exist
|
||||
if !temp_folder.exists() {
|
||||
let _ = fs::create_dir(&temp_folder);
|
||||
}
|
||||
if !full_folder.exists() {
|
||||
if !full_folder.exists() && !item_info.use_abs_path{
|
||||
let _ = fs::create_dir(&full_folder);
|
||||
}
|
||||
|
||||
if item_info.use_abs_path {
|
||||
full_folder = item_info.target_folder.clone();
|
||||
temp_folder = item_info.target_folder.clone();
|
||||
full_folder = temp_folder.clone();
|
||||
}
|
||||
|
||||
println!("{}",item_info.convert_rpy);
|
||||
|
||||
|
||||
// // Copy the contents of the target folder to the temporary folder
|
||||
if !item_info.use_abs_path{
|
||||
let _ = fs_extra::dir::copy(&item_info.target_folder, &full_folder, &fs_extra::dir::CopyOptions::new());
|
||||
} else {
|
||||
let entries = match fs::read_dir(&item_info.target_folder) {
|
||||
Ok(entries) => entries,
|
||||
Err(_err) => return Err(SteamError::FileNotFound),
|
||||
};
|
||||
for entry in entries {
|
||||
let entry = match entry {
|
||||
Ok(entry) => entry,
|
||||
Err(_err) => return Err(SteamError::FileNotFound),
|
||||
};
|
||||
|
||||
let entry_path = entry.path();
|
||||
let relative_path = match entry_path.strip_prefix(Path::new(&item_info.target_folder)){
|
||||
Ok(relative_path) => relative_path,
|
||||
Err(_err) => return Err(SteamError::FileNotFound),
|
||||
};
|
||||
let destination_path = temp_folder.join(relative_path);
|
||||
|
||||
|
||||
if entry_path.is_file(){
|
||||
let _ = fs::copy(entry_path, destination_path);
|
||||
} else if entry_path.is_dir() {
|
||||
let _ = fs_extra::dir::copy(&entry_path, &temp_folder, &fs_extra::dir::CopyOptions::new());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if item_info.convert_rpy {
|
||||
let entries = match fs::read_dir(&full_folder) {
|
||||
Ok(entries) => entries,
|
||||
Err(_err) => return Err(SteamError::FileNotFound),
|
||||
};
|
||||
let entries = WalkDir::new(&full_folder);
|
||||
for entry in entries {
|
||||
let entry = match entry {
|
||||
Ok(entry) => entry,
|
||||
|
Reference in New Issue
Block a user