Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use XDG standard by default #304

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open

Conversation

c4llv07e
Copy link

It would be nice if tg followed XDG base directory specification.

tg/config.py Outdated

CONFIG_DIR = os.path.expanduser("~/.config/tg/")
CONFIG_DIR = expand_path("$XDG_CONFIG_HOME/tg/")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This doesn't work if $XDG_CONFIG_HOME isn't set.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not really sure about this solution, but it works both with and without variables.

tg/config.py Outdated Show resolved Hide resolved
@@ -11,14 +11,21 @@
_darwin = "Darwin"
_linux = "Linux"

def expand_path(path):
return os.path.expandvars(os.path.expanduser(path))
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What’s the purpose of expandvars() here? This seems like it might introduce unexpected behaviour in case any of the paths might have a "$" in them (for whatever reason).

The $XDG_* variables are already "expanded" by os.getenv, so e.g. os.getenv("XDG_CONFIG_HOME", "~/.config") following export XDG_CONFIG_HOME=$HOME/.xdg_config would return /home/user/.xdg_config, not $XDG_CONFIG_HOME/.xdg_config.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you are using default paths, then you're right. But what if someone changes cache folder location to "$XDG_CACHE_HOME/$USER/tg"? Then they couldn't expand it with os.getenv.
If you use the default paths, then you are right. But what if someone changes the location of the cache folder to "$XDG_CACHE_HOME/$USER/tg"? Then they won't be able to expand it with `os.getenv'.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You mean change the location inside tg? Or set XDG_CACHE_HOME? If the former, then this PR is introducing a feature to the codebase beyond what it says it’s set out to do and unrelated to the XDG standard. If the latter, then $USER would be expanded by the system and stored in the XDG_CACHE_HOME envvar directly, so there’d be no need to expand it again inside tg.

And again, this may break in the case of a user for some reason or other decided to use a literal $ in their paths and it happens to resolve to a variable in the environment at time of evaluation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants