summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Thiel <sthiel@thoughtworks.com>2019-06-05 07:59:51 +0530
committerSebastian Thiel <sthiel@thoughtworks.com>2019-06-05 07:59:51 +0530
commit80f01dbfcce5c5c6d482a47d9f04fd5a0f8e75c0 (patch)
tree0138f56f8d05e257b2d74a7821a90e732be2aca0
parentc7ee6b53b49a8c9489aa07bd7d262ec1d2b76349 (diff)
Moved 'interactive' portion of code into binary - break unit tests for now
-rw-r--r--src/common.rs31
-rw-r--r--src/interactive/app.rs27
-rw-r--r--src/interactive/widgets/entries.rs13
-rw-r--r--src/interactive/widgets/main.rs10
-rw-r--r--src/lib.rs1
-rw-r--r--src/main.rs14
-rw-r--r--tests/interactive.rs4
7 files changed, 47 insertions, 53 deletions
diff --git a/src/common.rs b/src/common.rs
index 2e8a736..2e25e9e 100644
--- a/src/common.rs
+++ b/src/common.rs
@@ -1,14 +1,33 @@
-use crate::{
- interactive::SortMode,
- traverse::{EntryData, Tree, TreeIndex},
-};
+use crate::traverse::{EntryData, Tree, TreeIndex};
use byte_unit::{n_gb_bytes, n_gib_bytes, n_mb_bytes, n_mib_bytes, ByteUnit};
use itertools::Itertools;
use jwalk::WalkDir;
use petgraph::Direction;
use std::{fmt, path::Path, path::PathBuf};
-pub(crate) fn path_of(tree: &Tree, mut node_idx: TreeIndex) -> PathBuf {
+#[derive(Debug, Copy, Clone, PartialOrd, PartialEq, Eq)]
+pub enum SortMode {
+ SizeDescending,
+ SizeAscending,
+}
+
+impl SortMode {
+ pub fn toggle_size(&mut self) {
+ use SortMode::*;
+ *self = match self {
+ SizeAscending => SizeDescending,
+ SizeDescending => SizeAscending,
+ }
+ }
+}
+
+impl Default for SortMode {
+ fn default() -> Self {
+ SortMode::SizeDescending
+ }
+}
+
+pub fn path_of(tree: &Tree, mut node_idx: TreeIndex) -> PathBuf {
const THE_ROOT: usize = 1;
let mut entries = Vec::new();
@@ -36,7 +55,7 @@ pub(crate) fn get_size_or_panic(tree: &Tree, node_idx: TreeIndex) -> u64 {
get_entry_or_panic(tree, node_idx).size
}
-pub(crate) fn sorted_entries(
+pub fn sorted_entries(
tree: &Tree,
node_idx: TreeIndex,
sorting: SortMode,
diff --git a/src/interactive/app.rs b/src/interactive/app.rs
index 7418579..b939074 100644
--- a/src/interactive/app.rs
+++ b/src/interactive/app.rs
@@ -1,8 +1,11 @@
use crate::{
interactive::widgets::{DrawState, HelpPaneState, MainWindow},
+ ByteFormat,
+};
+use dua::{
path_of, sorted_entries,
traverse::{Traversal, TreeIndex},
- ByteFormat, WalkOptions, WalkResult,
+ SortMode, WalkOptions, WalkResult,
};
use failure::Error;
use itertools::Itertools;
@@ -11,28 +14,6 @@ use std::{fmt, io, path::PathBuf};
use termion::input::{Keys, TermReadEventsAndRaw};
use tui::{backend::Backend, widgets::Widget, Terminal};
-#[derive(Debug, Copy, Clone, PartialOrd, PartialEq, Eq)]
-pub enum SortMode {
- SizeDescending,
- SizeAscending,
-}
-
-impl SortMode {
- pub fn toggle_size(&mut self) {
- use SortMode::*;
- *self = match self {
- SizeAscending => SizeDescending,
- SizeDescending => SizeAscending,
- }
- }
-}
-
-impl Default for SortMode {
- fn default() -> Self {
- SortMode::SizeDescending
- }
-}
-
#[derive(Clone, Copy)]
pub enum ByteVisualization {
Percentage,
diff --git a/src/interactive/widgets/entries.rs b/src/interactive/widgets/entries.rs
index 31bc7f0..25c7194 100644
--- a/src/interactive/widgets/entries.rs
+++ b/src/interactive/widgets/entries.rs
@@ -1,10 +1,11 @@
-use crate::{
- interactive::{
- widgets::{fill_background_to_right, List, ListState},
- DisplayOptions, SortMode,
- },
+use crate::interactive::{
+ widgets::{fill_background_to_right, List, ListState},
+ DisplayOptions,
+};
+use dua::{
sorted_entries,
traverse::{Tree, TreeIndex},
+ SortMode,
};
use itertools::Itertools;
use std::path::Path;
@@ -43,7 +44,7 @@ impl<'a, 'b> Widget for Entries<'a, 'b> {
.next()
.is_none()
};
- let path_of = |node_idx| crate::common::path_of(tree, node_idx);
+ let path_of = |node_idx| dua::path_of(tree, node_idx);
let entries = sorted_entries(tree, *root, *sorting);
let total: u64 = entries.iter().map(|(_, w)| w.size).sum();
diff --git a/src/interactive/widgets/main.rs b/src/interactive/widgets/main.rs
index a1100f5..4793151 100644
--- a/src/interactive/widgets/main.rs
+++ b/src/interactive/widgets/main.rs
@@ -1,10 +1,8 @@
-use crate::{
- interactive::{
- widgets::{Entries, Footer, Header, HelpPane, ListState},
- AppState, DisplayOptions, FocussedPane,
- },
- traverse::Traversal,
+use crate::interactive::{
+ widgets::{Entries, Footer, Header, HelpPane, ListState},
+ AppState, DisplayOptions, FocussedPane,
};
+use dua::traverse::Traversal;
use tui::style::{Color, Style};
use tui::{
buffer::Buffer,
diff --git a/src/lib.rs b/src/lib.rs
index 1f0e294..ecb66b4 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -4,7 +4,6 @@ extern crate jwalk;
mod aggregate;
mod common;
-pub mod interactive;
pub mod traverse;
pub use aggregate::aggregate;
diff --git a/src/main.rs b/src/main.rs
index fca4014..8d58c0c 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -2,16 +2,16 @@ extern crate failure;
extern crate failure_tools;
extern crate structopt;
-use structopt::StructOpt;
-
+use crate::interactive::TerminalApp;
use dua::{ByteFormat, Color, TraversalSorting};
use failure::{Error, ResultExt};
use failure_tools::ok_or_exit;
use std::{fs, io, io::Write, path::PathBuf, process};
-use termion::input::TermRead;
-use termion::{raw::IntoRawMode, screen::AlternateScreen};
+use structopt::StructOpt;
+use termion::{input::TermRead, raw::IntoRawMode, screen::AlternateScreen};
use tui::{backend::TermionBackend, Terminal};
+mod interactive;
mod options;
fn run() -> Result<(), Error> {
@@ -39,11 +39,7 @@ fn run() -> Result<(), Error> {
Terminal::new(backend)
.with_context(|_| "Interactive mode requires a connected terminal")?
};
- let mut app = dua::interactive::TerminalApp::initialize(
- &mut terminal,
- walk_options,
- paths_from(input)?,
- )?;
+ let mut app = TerminalApp::initialize(&mut terminal, walk_options, paths_from(input)?)?;
app.process_events(&mut terminal, io::stdin().keys())?
}
Some(Aggregate {
diff --git a/tests/interactive.rs b/tests/interactive.rs
index fe6cf76..5210c9b 100644
--- a/tests/interactive.rs
+++ b/tests/interactive.rs
@@ -1,8 +1,8 @@
mod app {
use dua::{
- interactive::{SortMode, TerminalApp},
+ interactive::TerminalApp,
traverse::{EntryData, Tree, TreeIndex},
- ByteFormat, Color, TraversalSorting, WalkOptions,
+ ByteFormat, Color, SortMode, TraversalSorting, WalkOptions,
};
use failure::Error;
use petgraph::prelude::NodeIndex;