diff options
Diffstat (limited to 'atuin-client/src/import/mod.rs')
-rw-r--r-- | atuin-client/src/import/mod.rs | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/atuin-client/src/import/mod.rs b/atuin-client/src/import/mod.rs index 0b21d605..d73d3857 100644 --- a/atuin-client/src/import/mod.rs +++ b/atuin-client/src/import/mod.rs @@ -1,16 +1,24 @@ -use std::fs::File; -use std::io::{BufRead, BufReader, Seek, SeekFrom}; +use std::io::{BufRead, BufReader, Read, Seek, SeekFrom}; +use std::path::{Path, PathBuf}; use eyre::Result; +use crate::history::History; + pub mod bash; pub mod resh; pub mod zsh; // this could probably be sped up -fn count_lines(buf: &mut BufReader<File>) -> Result<usize> { +fn count_lines(buf: &mut BufReader<impl Read + Seek>) -> Result<usize> { let lines = buf.lines().count(); buf.seek(SeekFrom::Start(0))?; Ok(lines) } + +pub trait Importer: IntoIterator<Item = Result<History>> + Sized { + const NAME: &'static str; + fn histpath() -> Result<PathBuf>; + fn parse(path: impl AsRef<Path>) -> Result<Self>; +} |