Skip to content

Commit 011fe31

Browse files
authored
feat: support additional history filenames in replxx importer (#3005)
<!-- Thank you for making a PR! Bug fixes are always welcome, but if you're adding a new feature or changing an existing one, we'd really appreciate if you open an issue, post on the forum, or drop in on Discord --> The original implementation of the `replxx` importer, from PR #2024, only supported `.histfile` as a filename for the history file, since there is no default filename. However, the replxx codebase does use `replxx_history.txt` as an example history filename (see [here](https://github.com/AmokHuginnsson/replxx/blob/release-0.0.4/examples/c-api.c#L183) and [here](https://github.com/AmokHuginnsson/replxx/blob/release-0.0.4/examples/cxx-api.cxx#L383)), so this patch adds support for that as an alternative filename. The implementation was modeled after [the one](https://github.com/atuinsh/atuin/blob/v18.10.0/crates/atuin-client/src/import/zsh.rs#L29-L44) currently used for the `zsh` history file importer, which also means the `replxx` importer now produces a human-friendly error if no history file is found in the expected path(s). ## Checks - [x] I am happy for maintainers to push small adjustments to this PR, to speed up the review cycle - [x] I have checked that there are no existing pull requests for the same thing /cc @amosbird who introduced this importer in #2024.
1 parent dc5cb30 commit 011fe31

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

crates/atuin-client/src/import/replxx.rs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,23 @@ fn default_histpath() -> Result<PathBuf> {
1919
let home_dir = user_dirs.home_dir();
2020

2121
// There is no default histfile for replxx.
22-
// For simplicity let's use the most common one.
23-
Ok(home_dir.join(".histfile"))
22+
// Here we try a couple of common names.
23+
let mut candidates = ["replxx_history.txt", ".histfile"].iter();
24+
loop {
25+
match candidates.next() {
26+
Some(candidate) => {
27+
let histpath = home_dir.join(candidate);
28+
if histpath.exists() {
29+
break Ok(histpath);
30+
}
31+
}
32+
None => {
33+
break Err(eyre!(
34+
"Could not find history file. Try setting and exporting $HISTFILE"
35+
));
36+
}
37+
}
38+
}
2439
}
2540

2641
#[async_trait]

0 commit comments

Comments
 (0)