Skip to content

Commit 712c95a

Browse files
committed
Support gzipped genbanks
1 parent ea7362a commit 712c95a

File tree

1 file changed

+17
-5
lines changed

1 file changed

+17
-5
lines changed

src/main.rs

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ use gen::exports::fasta::export_fasta;
1111
use gen::exports::genbank::export_genbank;
1212
use gen::exports::gfa::export_gfa;
1313
use gen::fasta::FastaError;
14+
use gen::genbank::GenBankError;
1415
use gen::get_connection;
1516
use gen::graph_operators::{derive_chunks, get_path, make_stitch};
1617
use gen::imports::fasta::import_fasta;
@@ -608,11 +609,16 @@ fn main() {
608609
}
609610
}
610611
} else if let Some(gb) = gb {
611-
let f = File::open(gb).unwrap();
612-
let _ = import_genbank(
612+
let mut reader: Box<dyn std::io::Read> = if gb.ends_with(".gz") {
613+
let file = File::open(gb.clone()).unwrap();
614+
Box::new(flate2::read::GzDecoder::new(file))
615+
} else {
616+
Box::new(File::open(gb.clone()).unwrap())
617+
};
618+
match import_genbank(
613619
&conn,
614620
&operation_conn,
615-
&f,
621+
&mut reader,
616622
name.deref(),
617623
sample.as_deref(),
618624
OperationInfo {
@@ -622,8 +628,14 @@ fn main() {
622628
}],
623629
description: "GenBank Import".to_string(),
624630
},
625-
);
626-
println!("Genbank imported.");
631+
) {
632+
Ok(_) => println!("GenBank Imported."),
633+
Err(err) => {
634+
conn.execute("ROLLBACK TRANSACTION;", []).unwrap();
635+
operation_conn.execute("ROLLBACK TRANSACTION;", []).unwrap();
636+
panic!("Import failed: {err:?}");
637+
}
638+
}
627639
} else if region_name.is_some() && parts.is_some() && library.is_some() {
628640
import_library(
629641
&conn,

0 commit comments

Comments
 (0)