Open ofersadan85 opened 6 months ago
Any reason to not support XDG env on Windows other than just "consistency" (not followed by bunch of apps like git)?
There would still need to be a fallback for when xdg environment variables are not set. In that case it makes sense for $XDG_CONFIG_HOME
to default to $APPDATA
.
Any reason to not support XDG env on Windows other than just "consistency" (not followed by bunch of apps like git)?
The 'xdg' package used before this PR did not support this env variable either way, since it strictly didn't support Windows at all. Removing it didn't change that.
We can now support multiple paths anyway with this PR so more can be added if that's required
[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: ofersadan85
The full list of commands accepted by this bot can be found here.
Added a small fix for this compiler warning, as this was also relevant to Windows only:
warning: `&` without an explicit lifetime name cannot be used here
--> src\meta\filetype.rs:19:34
|
19 | const EXECUTABLE_EXTENSIONS: &[&'static str] = &["exe", "msi", "bat", "ps1"];
| ^
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
= note: for more information, see issue #115010 <https://github.com/rust-lang/rust/issues/115010>
= note: `#[warn(elided_lifetimes_in_associated_constant)]` on by default
help: use the `'static` lifetime
|
19 | const EXECUTABLE_EXTENSIONS: &'static [&'static str] = &["exe", "msi", "bat", "ps1"];
| +++++++
Adding XDG support cross-platform for this would be fairly simple.
For all directories in the array [ $XDG_CONFIG_HOME, ...$XDG_CONFIG_DIRS, $HOME/.config, $APPDATA, $LOCALAPPDATA, $USERPROFILE/.config ], if the directory exists and 'lsd' is accessible within it, look for the config file within that 'lsd' subdirectory. If the config file is not found, proceed to the next directory.
The only platform specific issue would likely be the split of the $XDG_CONFIG_DIRS directory list, which is separated by ':' on POSIX and ';' on WinOS.
The described method works as the XDG spec expects and falls back to reasonable defaults on all platforms (including WinOS).
Less platform-specific code which should be a win-win for both devs and users.
Adding XDG support cross-platform for this would be fairly simple.
For all directories in the array [ $XDG_CONFIG_HOME, ...$XDG_CONFIG_DIRS, $HOME/.config, $APPDATA, $LOCALAPPDATA, $USERPROFILE/.config ], if the directory exists and 'lsd' is accessible within it, look for the config file within that 'lsd' subdirectory. If the config file is not found, proceed to the next directory.
The only platform specific issue would likely be the split of the $XDG_CONFIG_DIRS directory list, which is separated by ':' on POSIX and ';' on WinOS.
The described method works as the XDG spec expects and falls back to reasonable defaults on all platforms (including WinOS).
Less platform-specific code which should be a win-win for both devs and users.
I tend to agree with this, but like I said before, this is a bigger change that can wait for after this PR in my opinion. This PR only adds some functionality to reuse code between Windows and other OSs when searching for paths (i.e. using the logic within dirs
package) and supporting multiple paths for searching the config. This can later be extended as @zwpaper wants
sorry for the late reply, I am in a sick leave, it may need days to get back 🤧
this is a bigger change that can wait for after this PR in my opinion
yes, let's leave that enhancement to another PR
Attention: Patch coverage is 43.47826%
with 13 lines
in your changes are missing coverage. Please review.
Project coverage is 84.41%. Comparing base (
d2538a6
) to head (9b0edf2
). Report is 11 commits behind head on master.
Files | Patch % | Lines |
---|---|---|
src/config_file.rs | 28.57% | 10 Missing :warning: |
src/theme.rs | 75.00% | 2 Missing :warning: |
src/core.rs | 0.00% | 1 Missing :warning: |
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
hi @ofersadan85, do you have time for this PR? it seems the CI also needs to be fixed.
hi @ofersadan85, do you have time for this PR? it seems the CI also needs to be fixed.
I apologize again for the delay, I can't find time for this yet. I'll try again soon but feel free to send it off to someone else if it seems more urgent than I can handle
hi @ofersadan85, I have rebased your branch, but not able to push to your repo, so I created another PR: https://github.com/lsd-rs/lsd/pull/999, should we merge #999 or you pick my change into this one?
This PR adds some features that I was really missing in
lsd
:config.yml
andconfig.yaml
as they are both very common (.yml especially on Windows, as most Windows users are used to 3 letter extensions).$XDG_CONFIG_HOME/lsd
or$HOME/.config/lsd
on non-Windows platforms, and both%APPDATA%\lsd
or%USERPROFILE%\.config\lsd
on Windows. This is important for consistency with normal dotfiles for other apps. Fixes #758xdg
internally, and using onlydir
is more consistent and reliable for all systems.TODO
cargo fmt