diff --git a/dorado/read_pipeline/ResumeLoaderNode.cpp b/dorado/read_pipeline/ResumeLoaderNode.cpp index d0749ea7..a1cc4abc 100644 --- a/dorado/read_pipeline/ResumeLoaderNode.cpp +++ b/dorado/read_pipeline/ResumeLoaderNode.cpp @@ -1,6 +1,7 @@ #include "ResumeLoaderNode.h" #include "HtsReader.h" +#include "utils/tty_utils.h" #include #include @@ -27,6 +28,11 @@ void ResumeLoaderNode::copy_completed_reads() { indicators::option::PostfixText{"Resuming from file"}, indicators::option::Stream{std::cerr}}; + // Only log using progress bar if stderr is tty. If stderr is being + // routed to a file, the IndeterminateProgressBar just spams the file + // with dots. + bool is_safe_to_log = utils::is_fd_tty(stderr); + // Turn off logging for warnings. auto initial_hts_log_level = hts_get_log_level(); hts_set_log_level(HTS_LOG_OFF); @@ -39,7 +45,7 @@ void ResumeLoaderNode::copy_completed_reads() { std::string read_id = bam_get_qname(reader.record); m_processed_read_ids.insert(read_id); m_sink.push_message(BamPtr(bam_dup1(reader.record.get()))); - if (m_processed_read_ids.size() % 100 == 0) { + if (is_safe_to_log && m_processed_read_ids.size() % 100 == 0) { bar.tick(); } }