@@ -11,6 +11,7 @@ use gen::exports::fasta::export_fasta;
1111use gen:: exports:: genbank:: export_genbank;
1212use gen:: exports:: gfa:: export_gfa;
1313use gen:: fasta:: FastaError ;
14+ use gen:: genbank:: GenBankError ;
1415use gen:: get_connection;
1516use gen:: graph_operators:: { derive_chunks, get_path, make_stitch} ;
1617use 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