mirror of
https://github.com/kdheepak/taskwarrior-tui.git
synced 2025-08-25 08:47:18 +02:00
fix: Better error reporting
This commit is contained in:
parent
c1cc6068d7
commit
d0f3a05de7
1 changed files with 26 additions and 7 deletions
33
src/app.rs
33
src/app.rs
|
@ -50,7 +50,7 @@ use tui::{
|
||||||
style::{Color, Modifier, Style},
|
style::{Color, Modifier, Style},
|
||||||
terminal::Frame,
|
terminal::Frame,
|
||||||
text::{Span, Spans, Text},
|
text::{Span, Spans, Text},
|
||||||
widgets::{Block, BorderType, Borders, Clear, List, ListItem, Paragraph},
|
widgets::{Block, BorderType, Borders, Clear, List, ListItem, Paragraph, Wrap},
|
||||||
};
|
};
|
||||||
|
|
||||||
use rustyline::history::Direction as HistoryDirection;
|
use rustyline::history::Direction as HistoryDirection;
|
||||||
|
@ -690,11 +690,29 @@ impl TaskwarriorTui {
|
||||||
Self::draw_command(
|
Self::draw_command(
|
||||||
f,
|
f,
|
||||||
rects[1],
|
rects[1],
|
||||||
self.error.as_str(),
|
"Press ESC to return",
|
||||||
Span::styled("Error", Style::default().add_modifier(Modifier::BOLD)),
|
Span::styled("Error", Style::default().add_modifier(Modifier::BOLD)),
|
||||||
0,
|
0,
|
||||||
false,
|
false,
|
||||||
);
|
);
|
||||||
|
let text = self.error.as_str();
|
||||||
|
let title = vec![Span::styled("Error", Style::default().add_modifier(Modifier::BOLD))];
|
||||||
|
let rect = centered_rect(90, 60, f.size());
|
||||||
|
f.render_widget(Clear, rect);
|
||||||
|
let p = Paragraph::new(Text::from(text))
|
||||||
|
.block(
|
||||||
|
Block::default()
|
||||||
|
.borders(Borders::ALL)
|
||||||
|
.border_type(BorderType::Rounded)
|
||||||
|
.title(title),
|
||||||
|
)
|
||||||
|
.wrap(Wrap { trim: true });
|
||||||
|
f.render_widget(p, rect);
|
||||||
|
// draw error pop up
|
||||||
|
let rects = Layout::default()
|
||||||
|
.direction(Direction::Vertical)
|
||||||
|
.constraints([Constraint::Min(0)].as_ref())
|
||||||
|
.split(f.size());
|
||||||
}
|
}
|
||||||
Mode::Tasks(Action::HelpPopup) => {
|
Mode::Tasks(Action::HelpPopup) => {
|
||||||
Self::draw_command(
|
Self::draw_command(
|
||||||
|
@ -1565,8 +1583,8 @@ impl TaskwarriorTui {
|
||||||
pub fn export_tasks(&mut self) -> Result<()> {
|
pub fn export_tasks(&mut self) -> Result<()> {
|
||||||
let mut task = Command::new("task");
|
let mut task = Command::new("task");
|
||||||
|
|
||||||
// task.arg("rc.json.array=on");
|
task.arg("rc.json.array=on");
|
||||||
// task.arg("rc.confirmation=off");
|
task.arg("rc.confirmation=off");
|
||||||
|
|
||||||
if !self.filter.as_str().trim().is_empty() {
|
if !self.filter.as_str().trim().is_empty() {
|
||||||
if let Some(args) = shlex::split(self.filter.as_str().trim()) {
|
if let Some(args) = shlex::split(self.filter.as_str().trim()) {
|
||||||
|
@ -1592,10 +1610,13 @@ impl TaskwarriorTui {
|
||||||
let data = String::from_utf8_lossy(&output.stdout);
|
let data = String::from_utf8_lossy(&output.stdout);
|
||||||
let error = String::from_utf8_lossy(&output.stderr);
|
let error = String::from_utf8_lossy(&output.stderr);
|
||||||
|
|
||||||
if !error.contains("The expression could not be evaluated.") {
|
if output.status.success() {
|
||||||
if let Ok(imported) = import(data.as_bytes()) {
|
if let Ok(imported) = import(data.as_bytes()) {
|
||||||
self.tasks = imported;
|
self.tasks = imported;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
self.mode = Mode::Tasks(Action::Error);
|
||||||
|
self.error = format!("Running `{:?}` failed ({}): {}", &task, output.status, error);
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
@ -4440,8 +4461,6 @@ mod tests {
|
||||||
fn test_app() {
|
fn test_app() {
|
||||||
let mut app = TaskwarriorTui::new("next").unwrap();
|
let mut app = TaskwarriorTui::new("next").unwrap();
|
||||||
|
|
||||||
app.update(true).unwrap();
|
|
||||||
|
|
||||||
let backend = TestBackend::new(80, 20);
|
let backend = TestBackend::new(80, 20);
|
||||||
let mut terminal = Terminal::new(backend).unwrap();
|
let mut terminal = Terminal::new(backend).unwrap();
|
||||||
app.render(&mut terminal).unwrap();
|
app.render(&mut terminal).unwrap();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue