From 80f01dbfcce5c5c6d482a47d9f04fd5a0f8e75c0 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Wed, 5 Jun 2019 07:59:51 +0530 Subject: Moved 'interactive' portion of code into binary - break unit tests for now --- src/common.rs | 31 +++++++++++++++++++++++++------ src/interactive/app.rs | 27 ++++----------------------- src/interactive/widgets/entries.rs | 13 +++++++------ src/interactive/widgets/main.rs | 10 ++++------ src/lib.rs | 1 - src/main.rs | 14 +++++--------- tests/interactive.rs | 4 ++-- 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; -- cgit v1.2.3