summaryrefslogtreecommitdiffstats
path: root/atuin-client/src/import/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'atuin-client/src/import/mod.rs')
-rw-r--r--atuin-client/src/import/mod.rs14
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>;
+}