conda / menuinst

Cross platform menu item installation
https://conda.github.io/menuinst/
BSD 3-Clause "New" or "Revised" License
33 stars 41 forks source link

Expand variables for working directory and adjust Windows default path #212

Closed marcoesters closed 1 month ago

marcoesters commented 1 month ago

Description

This PR fixes two bugs:

  1. Environment variables are permitted for working_dir, but are not expanded. If working_dir is set to, e.g, %USERPROFILE%\workdir on Windows, menuinst would create a literal %USERPROFILE%\workdir path directory instead of %SYSTEMDRIVE%\Users\%USERNAME%\workdir. Expand these variables to create the correct directory name.
  2. The bug reported by #211. %HOMEPATH% alone does not contain a drive, which can fail if %HOMEDRIVE% is not C:. This PR uses a default directory that contains the drive name.

The second item is up for debate. The menuinst documentation describes that working_dir defaults to the user's home directory. On Windows, there can be two different interpretations: %USERPROFILE% or %HOMEDRIVE%%HOMEPATH%.

I decided to go with a precedent: os.path.expanduser checks if %USERPROFILE% is set and goes with %HOMEDRIVE%%HOMEPATH% otherwise. pathlib.Path.home() uses the same implementation, so I think menuinst should use the same definition as the Python ecosystem.

Instead of using os.path.expanduser("~"), I am using the names of the variables though to make the shortcuts be resolved at runtime instead of hard-coding the directories.

Closes #211

Checklist - did you ...