huget 0.1.0

gProfiler for human genomics
use std::error::Error;
use std::fs::File;
use std::io::Write;
use std::io::{BufRead, BufReader};

/*
Gaurav Sablok
codeprog@icloud.com
*/

#[tokio::main]
pub async fn metadata_fetch(
    pathname: &str,
    searchpath: &str,
    searchstring: &str,
) -> Result<String, Box<dyn Error>> {
    let file = File::open(pathname).expect("file not found");
    let fileread = BufReader::new(file);

    let mut refseqvec: Vec<(String, String)> = Vec::new();
    let mut ccdsvec: Vec<(String, String)> = Vec::new();

    for i in fileread.lines() {
        let line = i.expect("file not found");
        let linevec = line.split("\t").collect::<Vec<_>>();
        if linevec[3] == "RefSeq_dna" {
            refseqvec.push((linevec[0].to_string(), linevec[2].to_string()));
        } else if linevec[3] == "CCDS" {
            ccdsvec.push((linevec[0].to_string(), linevec[2].to_string()));
        }
    }

    if searchstring == "refseq" {
        let mut returnvec: Vec<(String, String)> = Vec::new();
        for i in refseqvec.iter() {
            if i.0 == searchpath {
                returnvec.push((i.0.clone(), i.1.clone()));
            }
        }
        let mut filewrite = File::create("refseq.txt").expect("file not present");
        writeln!(filewrite, "The refseq for the ensembl have been").expect("file not found");
        for i in returnvec.iter() {
            writeln!(filewrite, "{}\t{}\n", i.0, i.1).expect("file not found");
        }
    } else if searchstring == "CCDS" {
        let mut ccdsreturnvec: Vec<(String, String)> = Vec::new();
        for i in ccdsvec.iter() {
            if i.0 == searchpath {
                ccdsreturnvec.push((i.0.clone(), i.1.clone()));
            }
        }
        let mut filewrite = File::create("refseq.txt").expect("file not present");
        writeln!(filewrite, "The refseq for the ensembl have been").expect("file not found");
        for i in ccdsreturnvec.iter() {
            writeln!(filewrite, "{}\t{}\n", i.0, i.1).expect("file not found");
        }
    }

    Ok("The string has been parsed".to_string())
}