Hi!
I've been trying to get atuin set up on the illumos machine I built for work
@oxidecomputer, and I ran into a few issues which are fixed here:
1. The `clipboard` feature was only supported on Windows, Mac and Linux. I've
added a platform gate for that.
2. The `atomic-write-file` crate needed an update to the version of `nix` --
that is included.
3. As part of this, I found a [security
bug](https://rustsec.org/advisories/RUSTSEC-2024-0020.html) in the whoami
crate. The bug has been fixed upstream and I've included it.
whoami 1.5.0 deprecates the `hostname` function, which produced some fresh
warnings. While fixing the warnings I also took the liberty of doing some
code rearrangement, adding a few functions that wrap some common operations. I
didn't really know where to put those functions, so I created a new `utils`
module for it. If you have a better place to put them, I'm happy to change
the PR.
Feel free to make any changes to this PR if you like before landing it, or to
ask for review.
As a followup I'm also happy to set up a cross-compile build for atuin on
illumos. It's a bit harder to run tests in CI for illumos at the moment, but
I'm trying to get a project started up to make that happen in the future as
well.
* feat add atuin doctor
* registered -> logged_in
* not logged in, no sync info
* add plugin detection
* add a hack
* clippy
* add filesystem detection
* add title
* hmm
* need interactive shell
* feat(stats): add linux sysadmin commands to common_subcommands
I've been using atuin on my Linux box for some time now and I have
noticed that a few commands that are used rather often are not in the
list of common_subcommands.
This change adds these commands to the list.
* feat(stats): I forgot 'apt'
* Normalize formatting
This makes the commented bits unifed and makes lists multiline and
always adds the trailing comma.
* Add nix to default config
Since we are big fans of it ;)
Add 'I' binding to vim-normal mode (a la 'A' introduced in #1697) to
jump into vim-insert mode at the beginning of the search input.
Also add '/' and '?' bindings to vim-normal mode to clear the search
input and jump into vim-insert mode. This mimics the UX in e.g. `set -o
vi` (bash) or `bindkey -v` (zsh) mode when you are using 'k' and 'j' to
browse history lines and can type '/' or '?' to start a new search. (In
a perfect world it would target the search in the forward or backward
range starting at your current position in the history, but this is a
reasonable first step.)
* fix(client): no panic on empty inspector
* fix: clippy warning
Although I am not that happy with this clippy rule.
I am old school and we learned to put the most likely path first.
Back then compiler optimizations were not too great and cache prediction
was better handled this way.
* Update atuin/src/command/client/search/interactive.rs
---------
Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
* fix(import/zsh-histdb): import exit_status and session
* fix(import/zsh-histdb): avoid session id conflict
* fix(import/zsh-histdb): follow the format conventions of session and hostname
* fix(import/zsh-histdb): duration unit is nanosecond
* feat(client): add config option keys.scroll_exits
If the config option is set the `false`, using the up/down key won't
exit the TUI when scrolled past the first/last entry.
Example:
```
[keys]
scroll_exits = false
```
The default is `true`, which is the current behavior.
* Update atuin/src/command/client/search/interactive.rs
Co-authored-by: Koichi Murase <myoga.murase@gmail.com>
* refactor: add option to config.toml
---------
Co-authored-by: Koichi Murase <myoga.murase@gmail.com>
* add xonsh to `atuin import auto`
* respect $HISTFILE in xonsh importers
* disable up-arrow binding in xonsh when completion menu is active
* include xonsh logic in the same conditional as other shells
* format and fix clippy lints
* feat: support syncing aliases
This is definitely not yet finished, but works for zsh right now.
TODO:
1. Support other shells
2. Cache the alias generation, so we don't have to do a bunch of work at
shell init time
* correct imports
* fix clippy errors
* fix tests
* add the other shells
* support xonsh
* add delete
* update rust, then make clippy happy once more
* omfg fmt too