@@ -21,13 +21,12 @@ mod app;
21mod assets;
21mod assets;
23mod printer;
23mod printer;
24mod terminal;
25mod terminal;
26−use std::collections::HashSet;
27use std::fs::{self, File};
27use std::fs::{self, File};
28use std::io::{self, BufRead, BufReader, Write};
28use std::io::{self, BufRead, BufReader, Write};
29use std::process::{self, Child, Command, Stdio};
29use std::process::{self, Child, Command, Stdio};
30−use std::str::FromStr;
32#[cfg(unix)]
31#[cfg(unix)]
33use std::os::unix::fs::FileTypeExt;
32use std::os::unix::fs::FileTypeExt;
@@ -50,102 +49,11 @@ mod errors {
50 Clap(::clap::Error);
49 Clap(::clap::Error);
51 Io(::std::io::Error);
50 Io(::std::io::Error);
55− NoCorrectStylesSpecified {
56− description("no correct styles specified")
59− UnknownStyleName(name: String) {
60− description("unknown style name")
61− display("unknown style name: '{}'", name)
67use errors::*;
55use errors::*;
69−#[derive(Debug, Eq, PartialEq, Copy, Clone, Hash)]
70−pub enum OutputComponent {
80−impl OutputComponent {
81− fn components(&self, interactive_terminal: bool) -> &'static [OutputComponent] {
83− OutputComponent::Auto => if interactive_terminal {
84− OutputComponent::Full.components(interactive_terminal)
86− OutputComponent::Plain.components(interactive_terminal)
88− OutputComponent::Changes => &[OutputComponent::Changes],
89− OutputComponent::Grid => &[OutputComponent::Grid],
90− OutputComponent::Header => &[OutputComponent::Header],
91− OutputComponent::Numbers => &[OutputComponent::Numbers],
92− OutputComponent::Full => &[
93− OutputComponent::Changes,
94− OutputComponent::Grid,
95− OutputComponent::Header,
96− OutputComponent::Numbers,
98− OutputComponent::Plain => &[],
103−impl FromStr for OutputComponent {
106− fn from_str(s: &str) -> Result<Self> {
108− "auto" => Ok(OutputComponent::Auto),
109− "changes" => Ok(OutputComponent::Changes),
110− "grid" => Ok(OutputComponent::Grid),
111− "header" => Ok(OutputComponent::Header),
112− "numbers" => Ok(OutputComponent::Numbers),
113− "full" => Ok(OutputComponent::Full),
114− "plain" => Ok(OutputComponent::Plain),
115− _ => Err(ErrorKind::UnknownStyleName(s.to_owned()).into()),
120−pub struct OutputComponents(HashSet<OutputComponent>);
122−impl OutputComponents {
123− fn changes(&self) -> bool {
124− self.0.contains(&OutputComponent::Changes)
127− fn grid(&self) -> bool {
128− self.0.contains(&OutputComponent::Grid)
131− fn header(&self) -> bool {
132− self.0.contains(&OutputComponent::Header)
135− fn numbers(&self) -> bool {
136− self.0.contains(&OutputComponent::Numbers)
140−pub struct Options<'a> {
141− pub true_color: bool,
142− pub output_components: OutputComponents,
143− pub language: Option<&'a str>,
144− pub colored_output: bool,
146− pub term_width: usize,
149enum OutputType {
57enum OutputType {
150 Pager(Child),
58 Pager(Child),
151 Stdout(io::Stdout),
59 Stdout(io::Stdout),