forked from StrafesNET/map-tool
scan enum, Source property missing if fatal
This commit is contained in:
parent
694440bd29
commit
7523c4313a
31
src/main.rs
31
src/main.rs
@ -78,6 +78,11 @@ fn download(map_list: Vec<u64>) -> Result<(), Box<dyn std::error::Error>>{
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
enum Scan{
|
||||
Passed,
|
||||
Blocked,
|
||||
}
|
||||
fn scan() -> Result<(), Box<dyn std::error::Error>>{
|
||||
let mut id = 0u32;
|
||||
match std::fs::read_to_string("id"){
|
||||
@ -106,15 +111,15 @@ fn scan() -> Result<(), Box<dyn std::error::Error>>{
|
||||
let scripts = get_scripts(dom);
|
||||
|
||||
//check scribb
|
||||
let mut any_failed=false;
|
||||
let mut fail_count=0;
|
||||
let mut fail_type=Scan::Passed;
|
||||
for script in scripts.iter() {
|
||||
if let Some(rbx_dom_weak::types::Variant::String(s)) = script.properties.get("Source") {
|
||||
if allowed_set.contains(s) {
|
||||
println!("pass");
|
||||
continue;
|
||||
}else{
|
||||
println!("fail");
|
||||
any_failed=true;
|
||||
fail_type=Scan::Blocked;//no need to check for Flagged, it breaks the loop.
|
||||
fail_count+=1;
|
||||
if !blocked.contains(s) {
|
||||
blocked.insert(s.clone());//all fixed! just clone!
|
||||
std::fs::write(format!("scripts/blocked/{}.lua",id),s)?;
|
||||
@ -122,19 +127,19 @@ fn scan() -> Result<(), Box<dyn std::error::Error>>{
|
||||
}
|
||||
}
|
||||
}else{
|
||||
println!("failed to get source");
|
||||
any_failed=true;
|
||||
panic!("FATAL: failed to get source for {:?}",file_thing.file_name());
|
||||
}
|
||||
}
|
||||
if any_failed {
|
||||
println!("One or more scripts are not allowed.");
|
||||
}else{
|
||||
let mut dest=std::path::PathBuf::from("maps/processed");
|
||||
dest.set_file_name(file_thing.file_name());
|
||||
dest.set_extension("rbxl");//extension is always rbxl even if source file is extensionless
|
||||
let mut dest=match fail_type {
|
||||
Scan::Passed => std::path::PathBuf::from("maps/processed"),
|
||||
Scan::Blocked => {
|
||||
println!("{:?} - {} {} not allowed.",file_thing.file_name(),fail_count,if fail_count==1 {"script"}else{"scripts"});
|
||||
std::path::PathBuf::from("maps/purgatory")
|
||||
}
|
||||
};
|
||||
dest.push(file_thing.file_name());
|
||||
std::fs::rename(file_thing.path(), dest)?;
|
||||
}
|
||||
}
|
||||
std::fs::write("id",id.to_string())?;
|
||||
Ok(())
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user