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",
|
"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]]
|
[[package]]
|
||||||
name = "scoped-tls"
|
name = "scoped-tls"
|
||||||
version = "1.0.1"
|
version = "1.0.1"
|
||||||
@ -2495,6 +2504,16 @@ version = "0.9.4"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
|
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]]
|
[[package]]
|
||||||
name = "wasi"
|
name = "wasi"
|
||||||
version = "0.11.0+wasi-snapshot-preview1"
|
version = "0.11.0+wasi-snapshot-preview1"
|
||||||
@ -3185,6 +3204,7 @@ dependencies = [
|
|||||||
"native-dialog",
|
"native-dialog",
|
||||||
"open",
|
"open",
|
||||||
"steamworks",
|
"steamworks",
|
||||||
|
"walkdir",
|
||||||
"winres",
|
"winres",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ native-dialog = "0.6.3"
|
|||||||
image = "0.24.7"
|
image = "0.24.7"
|
||||||
open = "5.1.2"
|
open = "5.1.2"
|
||||||
fs_extra = "1.3.0"
|
fs_extra = "1.3.0"
|
||||||
|
walkdir = "2.5.0"
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
winres = "0.1.12"
|
winres = "0.1.12"
|
||||||
|
@ -6,6 +6,8 @@ use std::thread::Thread;
|
|||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
use steamworks::{Client, PublishedFileId, QueryResult, QueryResults, SingleClient, SteamError};
|
use steamworks::{Client, PublishedFileId, QueryResult, QueryResults, SingleClient, SteamError};
|
||||||
use std::fs;
|
use std::fs;
|
||||||
|
use std::path::Path;
|
||||||
|
use walkdir::WalkDir;
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct SingleClientExecutor {
|
pub struct SingleClientExecutor {
|
||||||
@ -200,34 +202,58 @@ impl WorkshopClient {
|
|||||||
item_info: ItemInfo,
|
item_info: ItemInfo,
|
||||||
) -> Result<(PublishedFileId, bool), SteamError> {
|
) -> Result<(PublishedFileId, bool), SteamError> {
|
||||||
let temp_dir = std::env::temp_dir(); // Get the temporary directory
|
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");
|
let mut full_folder = temp_folder.join("mods");
|
||||||
|
|
||||||
// Create the folders if they doesn't exist
|
// Create the folders if they doesn't exist
|
||||||
if !temp_folder.exists() {
|
if !temp_folder.exists() {
|
||||||
let _ = fs::create_dir(&temp_folder);
|
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);
|
let _ = fs::create_dir(&full_folder);
|
||||||
}
|
}
|
||||||
|
|
||||||
if item_info.use_abs_path {
|
if item_info.use_abs_path {
|
||||||
full_folder = item_info.target_folder.clone();
|
full_folder = temp_folder.clone();
|
||||||
temp_folder = item_info.target_folder.clone();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
println!("{}",item_info.convert_rpy);
|
||||||
|
|
||||||
|
|
||||||
// // Copy the contents of the target folder to the temporary folder
|
// // Copy the contents of the target folder to the temporary folder
|
||||||
if !item_info.use_abs_path{
|
if !item_info.use_abs_path{
|
||||||
let _ = fs_extra::dir::copy(&item_info.target_folder, &full_folder, &fs_extra::dir::CopyOptions::new());
|
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 {
|
if item_info.convert_rpy {
|
||||||
let entries = match fs::read_dir(&full_folder) {
|
let entries = WalkDir::new(&full_folder);
|
||||||
Ok(entries) => entries,
|
|
||||||
Err(_err) => return Err(SteamError::FileNotFound),
|
|
||||||
};
|
|
||||||
for entry in entries {
|
for entry in entries {
|
||||||
let entry = match entry {
|
let entry = match entry {
|
||||||
Ok(entry) => entry,
|
Ok(entry) => entry,
|
||||||
|
Reference in New Issue
Block a user