review command
This commit is contained in:
parent
c2299102cd
commit
0799aa311f
58
src/main.rs
58
src/main.rs
@ -10,9 +10,65 @@ struct Cli{
|
|||||||
|
|
||||||
#[derive(Subcommand)]
|
#[derive(Subcommand)]
|
||||||
enum Commands{
|
enum Commands{
|
||||||
|
Review(ReviewCommand),
|
||||||
}
|
}
|
||||||
fn main(){
|
|
||||||
|
#[derive(Args)]
|
||||||
|
struct ReviewCommand{
|
||||||
|
#[arg(long)]
|
||||||
|
cookie:String,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[tokio::main]
|
||||||
|
async fn main(){
|
||||||
let cli=Cli::parse();
|
let cli=Cli::parse();
|
||||||
match cli.command{
|
match cli.command{
|
||||||
|
Commands::Review(command)=>review(ReviewConfig{
|
||||||
|
cookie:command.cookie,
|
||||||
|
}).await.unwrap(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
enum ReviewError{
|
||||||
|
Cookie(submissions_api::CookieError),
|
||||||
|
Reqwest(submissions_api::ReqwestError),
|
||||||
|
GetPolicies(submissions_api::Error),
|
||||||
|
GetScriptFromHash(submissions_api::types::SingleItemError),
|
||||||
|
NoScript,
|
||||||
|
WriteCurrent(std::io::Error),
|
||||||
|
}
|
||||||
|
|
||||||
|
struct ReviewConfig{
|
||||||
|
cookie:String,
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn review(config:ReviewConfig)->Result<(),ReviewError>{
|
||||||
|
// download unreviewed policies
|
||||||
|
// review them
|
||||||
|
let cookie=submissions_api::Cookie::new(&config.cookie).map_err(ReviewError::Cookie)?;
|
||||||
|
let api=submissions_api::external::Context::new("http://localhost:8083".to_owned(),cookie).map_err(ReviewError::Reqwest)?;
|
||||||
|
|
||||||
|
let unreviewed_policies=api.get_script_policies(submissions_api::types::GetScriptPoliciesRequest{
|
||||||
|
Page:1,
|
||||||
|
Limit:100,
|
||||||
|
FromScriptHash:None,
|
||||||
|
ToScriptID:None,
|
||||||
|
Policy:Some(submissions_api::types::Policy::None),
|
||||||
|
}).await.map_err(ReviewError::GetPolicies)?;
|
||||||
|
|
||||||
|
for policy in unreviewed_policies{
|
||||||
|
// download source code
|
||||||
|
let script_response=api.get_script_from_hash(submissions_api::types::HashRequest{
|
||||||
|
hash:policy.FromScriptHash.as_str(),
|
||||||
|
}).await
|
||||||
|
.map_err(ReviewError::GetScriptFromHash)?
|
||||||
|
.ok_or(ReviewError::NoScript)?;
|
||||||
|
|
||||||
|
let source=script_response.Source;
|
||||||
|
//load source into current.lua
|
||||||
|
tokio::fs::write("current.lua",source).await.map_err(ReviewError::WriteCurrent)?;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user