download-decompile
This commit is contained in:
parent
d38152600e
commit
c856301aa6
59
src/main.rs
59
src/main.rs
@ -21,6 +21,7 @@ struct Cli{
|
||||
enum Commands{
|
||||
DownloadHistory(DownloadHistorySubcommand),
|
||||
Download(DownloadSubcommand),
|
||||
DownloadDecompile(DownloadDecompileSubcommand),
|
||||
DownloadGroupInventoryJson(DownloadGroupInventoryJsonSubcommand),
|
||||
Create(CreateSubcommand),
|
||||
Upload(UploadSubcommand),
|
||||
@ -148,6 +149,25 @@ struct DecompileSubcommand{
|
||||
write_scripts:Option<bool>,
|
||||
}
|
||||
#[derive(Args)]
|
||||
struct DownloadDecompileSubcommand{
|
||||
#[arg(long)]
|
||||
cookie_type:CookieType,
|
||||
#[arg(long)]
|
||||
cookie:String,
|
||||
#[arg(long)]
|
||||
output_folder:Option<PathBuf>,
|
||||
#[arg(long)]
|
||||
asset_id:AssetID,
|
||||
#[arg(long)]
|
||||
style:Style,
|
||||
#[arg(long)]
|
||||
write_template:Option<bool>,
|
||||
#[arg(long)]
|
||||
write_models:Option<bool>,
|
||||
#[arg(long)]
|
||||
write_scripts:Option<bool>,
|
||||
}
|
||||
#[derive(Args)]
|
||||
struct DecompileHistoryIntoGitSubcommand{
|
||||
#[arg(long)]
|
||||
input_folder:PathBuf,
|
||||
@ -236,6 +256,17 @@ async fn main()->AResult<()>{
|
||||
}).collect()
|
||||
).await
|
||||
},
|
||||
Commands::DownloadDecompile(subcommand)=>{
|
||||
download_decompile(DownloadDecompileConfig{
|
||||
cookie:Cookie::from_type(subcommand.cookie_type,subcommand.cookie).await?.0,
|
||||
asset_id:subcommand.asset_id,
|
||||
output_folder:subcommand.output_folder.unwrap_or_else(||std::env::current_dir().unwrap()),
|
||||
style:subcommand.style,
|
||||
write_template:subcommand.write_template.unwrap_or(false),
|
||||
write_models:subcommand.write_models.unwrap_or(false),
|
||||
write_scripts:subcommand.write_scripts.unwrap_or(true),
|
||||
}).await
|
||||
},
|
||||
Commands::DownloadGroupInventoryJson(subcommand)=>download_group_inventory_json(
|
||||
Cookie::from_type(subcommand.cookie_type,subcommand.cookie).await?.0,
|
||||
subcommand.group,
|
||||
@ -606,6 +637,34 @@ async fn decompile(config:DecompileConfig)->AResult<()>{
|
||||
Ok(())
|
||||
}
|
||||
|
||||
struct DownloadDecompileConfig{
|
||||
cookie:String,
|
||||
asset_id:AssetID,
|
||||
style:Style,
|
||||
output_folder:PathBuf,
|
||||
write_template:bool,
|
||||
write_models:bool,
|
||||
write_scripts:bool,
|
||||
}
|
||||
|
||||
async fn download_decompile(config:DownloadDecompileConfig)->AResult<()>{
|
||||
let context=RobloxContext::new(config.cookie);
|
||||
let file=context.download(rbx_asset::context::DownloadRequest{asset_id:config.asset_id,version:None}).await?;
|
||||
|
||||
let dom=load_dom(std::io::Cursor::new(file))?;
|
||||
let context=rox_compiler::DecompiledContext::from_dom(dom);
|
||||
|
||||
context.write_files(rox_compiler::WriteConfig{
|
||||
style:config.style.rox(),
|
||||
output_folder:config.output_folder,
|
||||
write_template:config.write_template,
|
||||
write_models:config.write_models,
|
||||
write_scripts:config.write_scripts,
|
||||
}).await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
struct WriteCommitConfig{
|
||||
git_committer_name:String,
|
||||
git_committer_email:String,
|
||||
|
Loading…
Reference in New Issue
Block a user