import PathBuf

This commit is contained in:
Quaternions 2024-03-08 09:48:47 -08:00
parent 8f2115ebf2
commit b64da4511c

View File

@ -1,4 +1,4 @@
use std::io::Read; use std::{io::Read,path::PathBuf};
use clap::{Args,Parser,Subcommand}; use clap::{Args,Parser,Subcommand};
use anyhow::Result as AResult; use anyhow::Result as AResult;
use futures::StreamExt; use futures::StreamExt;
@ -6,7 +6,7 @@ use rbx_dom_weak::types::Ref;
use tokio::io::AsyncReadExt; use tokio::io::AsyncReadExt;
type AssetID=u64; type AssetID=u64;
type AssetIDFileMap=Vec<(AssetID,std::path::PathBuf)>; type AssetIDFileMap=Vec<(AssetID,PathBuf)>;
const CONCURRENT_DECODE:usize=8; const CONCURRENT_DECODE:usize=8;
const CONCURRENT_REQUESTS:usize=32; const CONCURRENT_REQUESTS:usize=32;
@ -25,7 +25,7 @@ struct Cli{
#[arg(long)] #[arg(long)]
cookie_env:Option<String>, cookie_env:Option<String>,
#[arg(long)] #[arg(long)]
cookie_file:Option<std::path::PathBuf>, cookie_file:Option<PathBuf>,
//TODO: read the versions.json file instead of doing this //TODO: read the versions.json file instead of doing this
//TODO: write file dates instead of versions.json //TODO: write file dates instead of versions.json
#[arg(long)] #[arg(long)]
@ -52,10 +52,10 @@ struct Cli{
git_committer_email:Option<String>, git_committer_email:Option<String>,
#[arg(short,long)] #[arg(short,long)]
input:Option<std::path::PathBuf>, input:Option<PathBuf>,
#[arg(short,long)] #[arg(short,long)]
output:Option<std::path::PathBuf>, output:Option<PathBuf>,
#[command(subcommand)] #[command(subcommand)]
command:Commands, command:Commands,
@ -86,7 +86,7 @@ struct AssetIDList{
#[derive(Args)] #[derive(Args)]
struct PathBufList{ struct PathBufList{
paths:Vec<std::path::PathBuf> paths:Vec<PathBuf>
} }
#[derive(serde::Deserialize)] #[derive(serde::Deserialize)]
@ -205,7 +205,7 @@ async fn main()->AResult<()>{
enum Cookie{ enum Cookie{
Literal(String), Literal(String),
Environment(String), Environment(String),
File(std::path::PathBuf), File(PathBuf),
} }
enum ReaderType<R:Read>{ enum ReaderType<R:Read>{
@ -380,7 +380,7 @@ struct DownloadHistoryConfig{
continue_from_versions:bool, continue_from_versions:bool,
end_version:Option<u64>, end_version:Option<u64>,
start_version:u64, start_version:u64,
output_folder:std::path::PathBuf, output_folder:PathBuf,
cookie:String, cookie:String,
asset_id:AssetID, asset_id:AssetID,
} }
@ -598,7 +598,7 @@ fn sanitize<'a>(s:&'a str)->std::borrow::Cow<'a,str>{
lazy_regex::regex!(r"[^A-z0-9.-]").replace_all(s,"_") lazy_regex::regex!(r"[^A-z0-9.-]").replace_all(s,"_")
} }
fn write_item(dom:&rbx_dom_weak::WeakDom,mut file:std::path::PathBuf,node:&TreeNode,node_name_override:String,mut properties:PropertiesOverride,style:DecompileStyle,write_models:bool,write_scripts:bool)->AResult<()>{ fn write_item(dom:&rbx_dom_weak::WeakDom,mut file:PathBuf,node:&TreeNode,node_name_override:String,mut properties:PropertiesOverride,style:DecompileStyle,write_models:bool,write_scripts:bool)->AResult<()>{
file.push(sanitize(node_name_override.as_str()).as_ref()); file.push(sanitize(node_name_override.as_str()).as_ref());
match node.class{ match node.class{
Class::Folder=>(), Class::Folder=>(),
@ -759,7 +759,7 @@ fn generate_decompiled_context<R:Read>(input:R)->AResult<DecompiledContext>{
struct WriteConfig{ struct WriteConfig{
style:DecompileStyle, style:DecompileStyle,
output_folder:std::path::PathBuf, output_folder:PathBuf,
write_template:bool, write_template:bool,
write_models:bool, write_models:bool,
write_scripts:bool, write_scripts:bool,
@ -866,8 +866,8 @@ async fn write_files(config:WriteConfig,mut context:DecompiledContext)->AResult<
struct DecompileConfig{ struct DecompileConfig{
style:DecompileStyle, style:DecompileStyle,
input_file:std::path::PathBuf, input_file:PathBuf,
output_folder:std::path::PathBuf, output_folder:PathBuf,
write_template:bool, write_template:bool,
write_models:bool, write_models:bool,
write_scripts:bool, write_scripts:bool,
@ -899,7 +899,7 @@ async fn decompile(config:DecompileConfig)->AResult<()>{
struct WriteCommitConfig{ struct WriteCommitConfig{
git_committer_name:String, git_committer_name:String,
git_committer_email:String, git_committer_email:String,
output_folder:std::path::PathBuf, output_folder:PathBuf,
style:DecompileStyle, style:DecompileStyle,
write_template:bool, write_template:bool,
write_models:bool, write_models:bool,
@ -990,9 +990,9 @@ async fn write_commit(config:WriteCommitConfig,b:Result<AResult<(AssetVersion,De
struct DecompileHistoryConfig{ struct DecompileHistoryConfig{
git_committer_name:String, git_committer_name:String,
git_committer_email:String, git_committer_email:String,
input_folder:std::path::PathBuf, input_folder:PathBuf,
style:DecompileStyle, style:DecompileStyle,
output_folder:std::path::PathBuf, output_folder:PathBuf,
write_template:bool, write_template:bool,
write_models:bool, write_models:bool,
write_scripts:bool, write_scripts:bool,
@ -1041,7 +1041,7 @@ struct DownloadAndDecompileHistoryConfig{
git_committer_name:String, git_committer_name:String,
git_committer_email:String, git_committer_email:String,
style:DecompileStyle, style:DecompileStyle,
output_folder:std::path::PathBuf, output_folder:PathBuf,
write_template:bool, write_template:bool,
write_models:bool, write_models:bool,
write_scripts:bool, write_scripts:bool,
@ -1119,7 +1119,7 @@ struct FileWithName{
name:String, name:String,
} }
async fn get_file_async(mut path:std::path::PathBuf,file_name:impl AsRef<std::path::Path>)->Result<FileWithName,QueryResolveError>{ async fn get_file_async(mut path:PathBuf,file_name:impl AsRef<std::path::Path>)->Result<FileWithName,QueryResolveError>{
let name=file_name.as_ref().to_str().unwrap().to_owned(); let name=file_name.as_ref().to_str().unwrap().to_owned();
path.push(file_name); path.push(file_name);
match tokio::fs::File::open(path).await{ match tokio::fs::File::open(path).await{
@ -1139,7 +1139,7 @@ struct QuerySingle{
script:QueryHandle, script:QueryHandle,
} }
impl QuerySingle{ impl QuerySingle{
fn rox(search_path:&std::path::PathBuf,search_name:&str)->Self{ fn rox(search_path:&PathBuf,search_name:&str)->Self{
Self{ Self{
script:tokio::spawn(get_file_async(search_path.clone(),format!("{}.lua",search_name))) script:tokio::spawn(get_file_async(search_path.clone(),format!("{}.lua",search_name)))
} }
@ -1160,7 +1160,7 @@ struct QueryTriple{
client:QueryHandle, client:QueryHandle,
} }
impl QueryTriple{ impl QueryTriple{
fn rox_rojo(search_path:&std::path::PathBuf,search_name:&str,search_module:bool)->Self{ fn rox_rojo(search_path:&PathBuf,search_name:&str,search_module:bool)->Self{
//this should be implemented as constructors of Triplet and Quadruplet to fully support Trey's suggestion //this should be implemented as constructors of Triplet and Quadruplet to fully support Trey's suggestion
let module_name=if search_module{ let module_name=if search_module{
format!("{}.module.lua",search_name) format!("{}.module.lua",search_name)
@ -1173,7 +1173,7 @@ impl QueryTriple{
client:tokio::spawn(get_file_async(search_path.clone(),format!("{}.client.lua",search_name))), client:tokio::spawn(get_file_async(search_path.clone(),format!("{}.client.lua",search_name))),
} }
} }
fn rojo(search_path:&std::path::PathBuf)->Self{ fn rojo(search_path:&PathBuf)->Self{
QueryTriple::rox_rojo(search_path,"init",false) QueryTriple::rox_rojo(search_path,"init",false)
} }
} }
@ -1243,7 +1243,7 @@ struct QueryQuad{
client:QueryHandle, client:QueryHandle,
} }
impl QueryQuad{ impl QueryQuad{
fn rox_rojo(search_path:&std::path::PathBuf,search_name:&str)->Self{ fn rox_rojo(search_path:&PathBuf,search_name:&str)->Self{
let fill=QueryTriple::rox_rojo(search_path,search_name,true); let fill=QueryTriple::rox_rojo(search_path,search_name,true);
Self{ Self{
module_implicit:QuerySingle::rox(search_path,search_name).script,//Script.lua module_implicit:QuerySingle::rox(search_path,search_name).script,//Script.lua
@ -1452,9 +1452,9 @@ enum CompileStackInstruction{
} }
struct CompileConfig{ struct CompileConfig{
input_folder:std::path::PathBuf, input_folder:PathBuf,
output_file:std::path::PathBuf, output_file:PathBuf,
template:Option<std::path::PathBuf>, template:Option<PathBuf>,
style:Option<DecompileStyle>, style:Option<DecompileStyle>,
} }