use std::path::PathBuf;
use clap::Parser;
use fey::cli::Args;
use fey::commands::{fileoutput, scan};
use fey::utils::data::get_data_file;
use std::fs;
use fey::utils::config::ConfigFile;
use fey::utils::error::Error;
#[tokio::main]
async fn main() {
let _config = match ConfigFile::new(){
Ok(config) => config,
Err(error) =>{
Error::eval(error);
std::process::exit(0x100);
},
};
let data_file_path = dirs::config_dir().unwrap().join("fey/urls.txt");
if !data_file_path.exists(){
get_data_file(dirs::config_dir().unwrap().join("fey")).await;
}
let args = Args::parse();
let file_content = match fs::read_to_string(data_file_path) {
Err(error) => {
eprintln!("Error: could not read file: {}", error);
std::process::exit(0x100);
}
Ok(content) => content,
};
let mut output_vec: Vec<String> = vec![];
println!("Start scanning");
for line in file_content.lines() {
let full_url = line.to_string() + &args.username;
let scan_output = match scan::scan(full_url).await {
Ok(output) => output,
Err(error) =>{
Error::eval(error);
std::process::exit(0x100);
},
};
print!("{}", &scan_output);
output_vec.push(scan_output);
}
if args.file.is_some() {
let file_path = args.file.unwrap();
fileoutput::write_to_file(PathBuf::from(file_path), output_vec);
}
}