Skip to content

Commit

Permalink
feat(oma-console): add Writer::new_no_limit_length ...
Browse files Browse the repository at this point in the history
... to add unmet dependency issue new line logic
  • Loading branch information
eatradish committed Nov 4, 2024
1 parent e0d100b commit a87584f
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 22 deletions.
22 changes: 18 additions & 4 deletions oma-console/src/writer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,15 @@ impl Default for Writer {
Writer {
term: Term::stderr(),
prefix_len: 10,
limit_max_len: Some(80),
}
}
}

pub struct Writer {
term: Term,
pub prefix_len: u16,
limit_max_len: Option<u16>,
}

impl Writer {
Expand All @@ -59,6 +61,14 @@ impl Writer {
}
}

pub fn new_no_limit_length(prefix_len: u16) -> Self {
Self {
prefix_len,
limit_max_len: None,
..Default::default()
}
}

pub fn new_stdout() -> Self {
Self {
term: Term::stdout(),
Expand All @@ -79,12 +89,16 @@ impl Writer {

/// Get terminal max len to writer message to terminal
pub fn get_max_len(&self) -> u16 {
let l = self.get_length();
let len = self.get_length();

if l < 80 {
l
if let Some(limit) = self.limit_max_len {
if len < limit {
len
} else {
limit
}
} else {
80
len
}
}

Expand Down
37 changes: 19 additions & 18 deletions src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use std::fmt::Display;
use std::io::{self, ErrorKind};

use oma_console::due_to;
use oma_console::writer::Writer;
use oma_console::writer::{Writeln, Writer};
use oma_contents::OmaContentsError;
use oma_fetch::checksum::ChecksumError;
use oma_fetch::DownloadError;
Expand Down Expand Up @@ -698,48 +698,49 @@ pub fn oma_apt_error_to_output(err: OmaAptError) -> OutputError {

println!();

let first_writer = Writer::new(name_len_max as u16 + 2 + 4);
let mut writer = first_writer.get_writer();
let first_writer = Writer::new_no_limit_length(name_len_max as u16 + 2 + 4);
let second_writer = Writer::new_no_limit_length(name_len_max as u16 + 2 + 4 + 4);

let mut last_name = "";

for dep in broken_deps {
let mut prefix = String::new();
if last_name != dep[0].name {
first_writer.write_prefix(&format!("{}:", dep[0].name)).ok();
prefix = format!("{}:", dep[0].name);
last_name = &dep[0].name;
} else {
first_writer.write_prefix("").ok();
}

let why = &dep[0].why;
write!(writer, "{}: {}", why.0, why.1).ok();
let mut output = format!("{}: {}", why.0, why.1);

let readson = &dep[0].reason;

if let Some(reason) = readson {
write!(writer, " {}\n", reason).ok();
} else {
writeln!(writer).ok();
output += &format!(" {}", reason);
}

if dep.len() > 1 {
let why_len_max = dep.iter().map(|dep| dep.why.0.len()).max().unwrap();
output += " or";
}

first_writer.writeln(&prefix, &output).ok();

let second_writer =
Writer::new(name_len_max as u16 + 2 + why_len_max as u16 + 2);
for or in dep {
second_writer.write_prefix(&format!("{}:", or.why.0)).ok();
write!(writer, " {}", or.why.1).ok();
if dep.len() > 1 {
for or in dep.iter().skip(1) {
let reason = &or.reason;

if let Some(reason) = reason {
write!(writer, " {}\n", reason).ok();
second_writer
.writeln("", &format!("{} {}", or.why.1, reason))
.ok();
} else {
writeln!(writer).ok();
second_writer.writeln("", &or.why.1).ok();
}
}
}
}

println!();
}
}

Expand Down

0 comments on commit a87584f

Please sign in to comment.