Remove generic commands

This commit is contained in:
Austen Adler 2022-12-17 11:29:34 -05:00
parent 2b11951166
commit 536086c4a0

View File

@ -4,11 +4,13 @@
mod command;
use ansi4tui::bytes_to_text;
use anyhow::anyhow;
use anyhow::bail;
use anyhow::Result;
use command::CommandResult;
use crossterm::event::DisableBracketedPaste;
use crossterm::event::EnableBracketedPaste;
use std::str::FromStr;
use std::{
io::{self, Write},
process::{Command, Stdio},
@ -67,7 +69,7 @@ impl App {
let wordsplit = true;
match template {
Template::Awk | Template::Generic(_) => Self {
Template::Awk => Self {
cmdline: String::new(),
cmdline_position,
text_orig,
@ -132,7 +134,6 @@ impl App {
}
pub enum Template {
Generic(String),
Sh(String),
Jq,
Grep,
@ -142,25 +143,26 @@ pub enum Template {
Perl,
}
impl Template {
#[must_use]
pub fn from(s: &str) -> Self {
impl FromStr for Template {
type Err = anyhow::Error;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s.to_lowercase().trim() {
"jq" => Self::Jq,
"grep" => Self::Grep,
"rg" => Self::Rg,
"sed" => Self::Sed,
"awk" => Self::Awk,
"perl" => Self::Perl,
s @ "sh" | s @ "bash" | s @ "zsh" | s @ "dash" => Self::Sh(s.to_string()),
c => Self::Generic(c.to_string()),
"jq" => Ok(Self::Jq),
"grep" => Ok(Self::Grep),
"rg" => Ok(Self::Rg),
"sed" => Ok(Self::Sed),
"awk" => Ok(Self::Awk),
"perl" => Ok(Self::Perl),
s @ "sh" | s @ "bash" | s @ "zsh" | s @ "dash" => Ok(Self::Sh(s.to_string())),
e => Err(anyhow!("{e} is not a supported command")),
}
}
}
impl Template {
#[must_use]
pub fn command(&self) -> String {
match self {
Self::Generic(c) => c.to_string(),
Self::Sh(s) => s.to_string(),
Self::Jq => String::from("jq"),
Self::Grep => String::from("grep"),
@ -184,6 +186,11 @@ fn main() -> Result<()> {
None => bail!("You must pass a command"),
};
// Slurp all input
let text_orig = io::read_to_string(io::stdin())?;
// Run the actual application
let app = App::from_template(text_orig, &Template::from_str(&arg)?);
enable_raw_mode()?;
let mut stdout = io::stdout();
// execute!(stdout, EnterAlternateScreen, EnableMouseCapture)?;
@ -196,11 +203,6 @@ fn main() -> Result<()> {
let backend = CrosstermBackend::new(stdout);
let mut terminal = Terminal::new(backend)?;
// Slurp all input
let text_orig = io::read_to_string(io::stdin())?;
// Run the actual application
let app = App::from_template(text_orig, &Template::from(&arg));
let res = run_app(&mut terminal, app);
// Restore terminal