Recently, it seems, the socket location for the daemon moved and this
caused me to scratch my head briefly since I saw errors from the client
connecting to the daemon, but the daemon was clearly running and the
socket seemed to exist.
This patch includes more context when the client fails to connect to the
daemon. The path is included to help the user understand where the
client was looking, and `wrap_err_with()` is used to show the user the
cause of the error. This changes the error message from:
Error: failed to connect to local atuin daemon. Is it running?
to:
Error: failed to connect to local atuin daemon at /run/user/1001/atuin.sock. Is it running?
Caused by:
0: transport error
1: No such file or directory (os error 2)
2: No such file or directory (os error 2)
* chore(build): compile protobufs with protox
protox is a pure-rust implementation of the protobuf compiler.
Therefore, it can be managed by cargo.
This removes the implicit dependency on protoc being available
in the environment for the build.
* fix(build): replace copypasta in build script
The paths passed to `compile` aren't actually used by the build.
`skip_protoc_run` prevents that.
That's why a clean build succeeds even with this mistake.
However, the paths are passed to a `cargo:rerun-if-changed` directive.
So this mistake would've caused a failed incremental build if the
protobuf definitions were changed.
This avoids issues with clients attempting to connect to the daemon
while it's starting, systemd creates the socket early and will queue
connections up until the daemon is ready to accept them.
* fix(daemon): do not try to sync if logged out
I've also added Settings::logged_in, as there are a few places where we
switch on login state.
* make session_token a function
* fix: gracefully exit on windows
* feat(daemon): tcp support for windows
* feat(daemon): add tcp port configuration
* fix: logging and fix compiler error
* docs: add build dependency to the readme
fix(docs): move a line up
* fix: missing field error
* docs: adds the daemon section to the default config
* fix: clippy and fmt
* feat: Update README.md
Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
* refactor: changes tcp port and other stuff as per request
* fix(config): update default tcp port in example config
* fix: complier error on unix
* refactor: make the cfg stuff look better
---------
Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
* init daemon crate
* wip
* minimal functioning daemon, needs cleanup for sure
* better errors
* add signal cleanup
* logging
* things
* add sync worker
* move daemon crate
* 30s -> 5mins
* make clippy happy
* fix stuff maybe?
* fmt
* trim packages
* rate limit fix
* more protoc huh
* this makes no sense, why linux why
* can it install literally just curl
* windows in ci is slow, and all the newer things will not work there. disable the daemon feature and it will build
* add daemon feature
* maybe this
* ok wut where is protoc
* try setting protoc
* hm
* try copying protoc
* remove optional
* add cross config
* idk nix
* does nix want this?
* some random pkg I found does this
* uh oh
* hack, be gone!
* update contributing