1use std::fs::File;
2use std::io::Write;
3
4use anyhow::Result;
5
6use super::sequence;
7use ggetrs_uniprot::functions::query;
8
9pub fn launch_seq(
10 search_terms: &Vec<String>,
11 translate: bool,
12 species: &Option<String>,
13 output: &Option<String>,
14) -> Result<()> {
15 if translate {
16 let results = query(search_terms, false, &None)?;
17 match output {
18 Some(path) => {
19 if let Ok(mut writer) = File::create(path) {
20 write!(writer, "{}", results.to_fasta()).expect("Unable to write to file");
21 } else {
22 print!("{}", results.to_fasta());
23 }
24 }
25 None => {
26 print!("{}", results.to_fasta());
27 }
28 }
29 } else {
30 let results = sequence(search_terms, species)?;
31 match output {
32 Some(path) => {
33 if let Ok(mut writer) = File::create(path) {
34 write!(writer, "{}", results.to_fasta()).expect("Unable to write to file");
35 } else {
36 print!("{}", results.to_fasta());
37 }
38 }
39 None => {
40 print!("{}", results.to_fasta());
41 }
42 }
43 }
44 Ok(())
45}