deduplicate code
This commit is contained in:
98
src/main.rs
98
src/main.rs
@@ -549,6 +549,21 @@ async fn download_policies(api:&submissions_api::external::Context)->Result<Vec<
|
||||
}
|
||||
Ok(policies)
|
||||
}
|
||||
enum UserChoice{
|
||||
Yes,
|
||||
No,
|
||||
}
|
||||
fn ask_user_yes_no()->Result<UserChoice,std::io::Error>{
|
||||
std::io::stdout().flush()?;
|
||||
|
||||
let mut input=String::new();
|
||||
std::io::stdin().read_line(&mut input)?;
|
||||
Ok(match input.trim(){
|
||||
"y"|"Y"=>UserChoice::Yes,
|
||||
_=>UserChoice::No,
|
||||
})
|
||||
}
|
||||
|
||||
async fn repair(config:RepairConfig)->Result<(),RepairError>{
|
||||
let cookie=submissions_api::Cookie::new(&config.session_id).map_err(RepairError::Cookie)?;
|
||||
let api=&submissions_api::external::Context::new(config.api_url,cookie).map_err(RepairError::Reqwest)?;
|
||||
@@ -580,17 +595,11 @@ async fn repair(config:RepairConfig)->Result<(),RepairError>{
|
||||
if !duplicate_scripts.is_empty(){
|
||||
// ask to confirm delete scripts
|
||||
print!("Delete {} duplicate scripts? [y/N]: ",duplicate_scripts.len());
|
||||
std::io::stdout().flush().map_err(RepairError::Io)?;
|
||||
|
||||
let mut input=String::new();
|
||||
std::io::stdin().read_line(&mut input).map_err(RepairError::Io)?;
|
||||
match input.trim(){
|
||||
"y"|"Y"=>(),
|
||||
_=>{
|
||||
println!("Quitting.");
|
||||
return Ok(());
|
||||
},
|
||||
match ask_user_yes_no().map_err(RepairError::Io)?{
|
||||
UserChoice::Yes=>{},
|
||||
UserChoice::No=>return Ok(()),
|
||||
}
|
||||
|
||||
futures::stream::iter(duplicate_scripts).map(Ok).try_for_each_concurrent(REMOTE_CONCURRENCY,|request|{
|
||||
api.delete_script(request)
|
||||
}).await.map_err(RepairError::DeleteScript)?;
|
||||
@@ -663,68 +672,44 @@ async fn repair(config:RepairConfig)->Result<(),RepairError>{
|
||||
|
||||
if !update_policies.is_empty(){
|
||||
print!("Update {} policies? [y/N]: ",update_policies.len());
|
||||
std::io::stdout().flush().map_err(RepairError::Io)?;
|
||||
|
||||
let mut input=String::new();
|
||||
std::io::stdin().read_line(&mut input).map_err(RepairError::Io)?;
|
||||
match input.trim(){
|
||||
"y"|"Y"=>(),
|
||||
_=>{
|
||||
println!("Quitting.");
|
||||
return Ok(());
|
||||
},
|
||||
match ask_user_yes_no().map_err(RepairError::Io)?{
|
||||
UserChoice::Yes=>{},
|
||||
UserChoice::No=>return Ok(()),
|
||||
}
|
||||
|
||||
futures::stream::iter(update_policies).map(Ok).try_for_each_concurrent(REMOTE_CONCURRENCY,|request|{
|
||||
api.update_script_policy(request)
|
||||
}).await.map_err(RepairError::UpdateScriptPolicy)?;
|
||||
}
|
||||
if !policies_not_unique.is_empty(){
|
||||
print!("Delete {} duplicate policies? [y/N]: ",policies_not_unique.len());
|
||||
std::io::stdout().flush().map_err(RepairError::Io)?;
|
||||
|
||||
let mut input=String::new();
|
||||
std::io::stdin().read_line(&mut input).map_err(RepairError::Io)?;
|
||||
match input.trim(){
|
||||
"y"|"Y"=>(),
|
||||
_=>{
|
||||
println!("Quitting.");
|
||||
return Ok(());
|
||||
},
|
||||
match ask_user_yes_no().map_err(RepairError::Io)?{
|
||||
UserChoice::Yes=>{},
|
||||
UserChoice::No=>return Ok(()),
|
||||
}
|
||||
|
||||
futures::stream::iter(policies_not_unique).map(Ok).try_for_each_concurrent(REMOTE_CONCURRENCY,|request|{
|
||||
api.delete_script_policy(request)
|
||||
}).await.map_err(RepairError::DeleteScriptPolicy)?;
|
||||
}
|
||||
if !policies_missing_from_script.is_empty(){
|
||||
print!("Delete {} orphaned policies? [y/N]: ",policies_missing_from_script.len());
|
||||
std::io::stdout().flush().map_err(RepairError::Io)?;
|
||||
|
||||
let mut input=String::new();
|
||||
std::io::stdin().read_line(&mut input).map_err(RepairError::Io)?;
|
||||
match input.trim(){
|
||||
"y"|"Y"=>(),
|
||||
_=>{
|
||||
println!("Quitting.");
|
||||
return Ok(());
|
||||
},
|
||||
match ask_user_yes_no().map_err(RepairError::Io)?{
|
||||
UserChoice::Yes=>{},
|
||||
UserChoice::No=>return Ok(()),
|
||||
}
|
||||
|
||||
futures::stream::iter(policies_missing_from_script).map(Ok).try_for_each_concurrent(REMOTE_CONCURRENCY,|request|{
|
||||
api.delete_script_policy(request)
|
||||
}).await.map_err(RepairError::DeleteScriptPolicy)?;
|
||||
}
|
||||
if !create_allow_policy.is_empty(){
|
||||
print!("Create {} missing Allowed policies? [y/N]: ",create_allow_policy.len());
|
||||
std::io::stdout().flush().map_err(RepairError::Io)?;
|
||||
|
||||
let mut input=String::new();
|
||||
std::io::stdin().read_line(&mut input).map_err(RepairError::Io)?;
|
||||
match input.trim(){
|
||||
"y"|"Y"=>(),
|
||||
_=>{
|
||||
println!("Quitting.");
|
||||
return Ok(());
|
||||
},
|
||||
match ask_user_yes_no().map_err(RepairError::Io)?{
|
||||
UserChoice::Yes=>{},
|
||||
UserChoice::No=>return Ok(()),
|
||||
}
|
||||
|
||||
futures::stream::iter(create_allow_policy).map(Ok).try_for_each_concurrent(REMOTE_CONCURRENCY,async|script_id|{
|
||||
api.create_script_policy(submissions_api::types::CreateScriptPolicyRequest{
|
||||
FromScriptID:script_id,
|
||||
@@ -872,16 +857,9 @@ async fn release(config:ReleaseConfig)->Result<(),ReleaseError>{
|
||||
|
||||
// ask to confirm schedule
|
||||
print!("Accept this release schedule for {game:?}? [y/N]: ");
|
||||
std::io::stdout().flush().map_err(ReleaseError::Io)?;
|
||||
|
||||
let mut input=String::new();
|
||||
std::io::stdin().read_line(&mut input).map_err(ReleaseError::Io)?;
|
||||
match input.trim(){
|
||||
"y"|"Y"=>(),
|
||||
_=>{
|
||||
println!("Quitting.");
|
||||
return Ok(());
|
||||
},
|
||||
match ask_user_yes_no().map_err(ReleaseError::Io)?{
|
||||
UserChoice::Yes=>{},
|
||||
UserChoice::No=>return Ok(()),
|
||||
}
|
||||
|
||||
// send it
|
||||
|
||||
Reference in New Issue
Block a user