fix: expand tilde in --env-file paths to user home directory#13510
fix: expand tilde in --env-file paths to user home directory#13510ndeloof merged 2 commits intodocker:mainfrom
Conversation
internal/paths/paths.go
Outdated
There was a problem hiding this comment.
you can use paths.ExpandUser from compose-go
There was a problem hiding this comment.
Updated as you suggested.
|
A better place to fix this is |
cb64f55 to
3f2191b
Compare
When using --env-file=~/.env, the tilde was not expanded to the user's home directory. Instead, it was treated as a literal character and resolved relative to the current working directory, resulting in errors like "couldn't find env file: /current/dir/~/.env". This adds an ExpandUser function that expands ~ to the home directory before converting relative paths to absolute paths. Fixes docker#13508 Signed-off-by: tensorworker <tensorworker@proton.me>
3f2191b to
3097793
Compare
…on.me> Signed-off-by: tensorworker <tensorworker@proton.me>
3097793 to
9551e86
Compare
|
@ndeloof I don't think this was a bug, and actually the correct behavior; expansion is handled by the shell, and does not happen if the value is prefixed by a git --git-dir=~/go/src/github.com/docker/compose/.git describe
fatal: not a git repository: '~/go/src/github.com/docker/compose/.git'
git --git-dir ~/go/src/github.com/docker/compose/.git describe
v2.26.1-891-gb760afaf9Bit concerned that this could be a sliding slope. |
|
@thaJeztah yes I know shell is in charge for this, but as long as we support both space and equal flag values, need to get an homogeneous behavior. compose.yaml already offers this feature |
|
Yeah, the issue here would be that it's not homogeneous across the CLI; other commands will not expand these, so now |
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [docker/compose](https://github.com/docker/compose) | patch | `v5.0.1` → `v5.0.2` | MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot). **Proposed changes to behavior should be submitted there as MRs.** --- ### Release Notes <details> <summary>docker/compose (docker/compose)</summary> ### [`v5.0.2`](https://github.com/docker/compose/releases/tag/v5.0.2) [Compare Source](docker/compose@v5.0.1...v5.0.2) #### What's Changed ##### 🐛 Fixes - Fixed progress UI to adapt to terminal width by [@​ndeloof](https://github.com/ndeloof) in [#​13519](docker/compose#13519) - Removed warning when no explicit build has been requested. by [@​ndeloof](https://github.com/ndeloof) in [#​13493](docker/compose#13493) - Restored `runtime_flags` support in `models` by [@​ilopezluna](https://github.com/ilopezluna) in [#​13460](docker/compose#13460) - Added service name completion to `down` command by [@​bmo-at](https://github.com/bmo-at) in [#​13470](docker/compose#13470) - Fixed tilde in `--env-file` paths expanded to user home directory by [@​tensorworkerr](https://github.com/tensorworkerr) in [#​13510](docker/compose#13510) - Handle `healthcheck.disable: true` by [@​stavros-k](https://github.com/stavros-k) in [#​13494](docker/compose#13494) - Fixed shutdown and error handling for large file change batches in `watch` by [@​amyssnippet](https://github.com/amyssnippet) in [#​13525](docker/compose#13525) ##### 🔧 Internal - Added unit test for upOptions.OnExit method by [@​htoyoda18](https://github.com/htoyoda18) in [#​13489](docker/compose#13489) - clean up temporary compose files after conversion by [@​htoyoda18](https://github.com/htoyoda18) in [#​13483](docker/compose#13483) - Fixed typo in isSwarmEnabled method name by [@​htoyoda18](https://github.com/htoyoda18) in [#​13481](docker/compose#13481) - Fixed incorrect usage of errgroup.WithContext by [@​htoyoda18](https://github.com/htoyoda18) in [#​13480](docker/compose#13480) - Fixed timeout initialization when waitTimeout is zero by [@​htoyoda18](https://github.com/htoyoda18) in [#​13471](docker/compose#13471) - Extracted API version constants to dedicated file by [@​htoyoda18](https://github.com/htoyoda18) in [#​13503](docker/compose#13503) - Replace tabbed indentation in sdk.md by [@​pkqk](https://github.com/pkqk) in [#​13505](docker/compose#13505) - Improved attach error handling and cleanup by [@​htoyoda18](https://github.com/htoyoda18) in [#​13488](docker/compose#13488) - Modernize tests by [@​dgageot](https://github.com/dgageot) in [#​13531](docker/compose#13531) - set fsnotify build tag when building for OSX by [@​ndeloof](https://github.com/ndeloof) in [#​13532](docker/compose#13532) ##### ⚙️ Dependencies - build(deps): bump github.com/klauspost/compress to v1.18.2 by [@​thaJeztah](https://github.com/thaJeztah) in [#​13499](docker/compose#13499) - go.mod: remove exclude rules by [@​thaJeztah](https://github.com/thaJeztah) in [#​13498](docker/compose#13498) - build(deps): bump github.com/containerd/containerd/v2 to v2.2.1 by [@​thaJeztah](https://github.com/thaJeztah) in [#​13497](docker/compose#13497) - build(deps): bump golang.org/x/sys from 0.39.0 to 0.40.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​13502](docker/compose#13502) - build(deps): bump google.golang.org/grpc from 1.77.0 to 1.78.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​13475](docker/compose#13475) - build(deps): bump github.com/go-viper/mapstructure/v2 from 2.4.0 to 2.5.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​13506](docker/compose#13506) - build(deps): bump github.com/sirupsen/logrus v1.9.4 by [@​thaJeztah](https://github.com/thaJeztah) in [#​13518](docker/compose#13518) - Bump compose to v2.10.1 by [@​ndeloof](https://github.com/ndeloof) in [#​13528](docker/compose#13528) #### New Contributors - [@​bmo-at](https://github.com/bmo-at) made their first contribution in [#​13470](docker/compose#13470) - [@​pkqk](https://github.com/pkqk) made their first contribution in [#​13505](docker/compose#13505) - [@​tensorworkerr](https://github.com/tensorworkerr) made their first contribution in [#​13510](docker/compose#13510) - [@​stavros-k](https://github.com/stavros-k) made their first contribution in [#​13494](docker/compose#13494) - [@​amyssnippet](https://github.com/amyssnippet) made their first contribution in [#​13525](docker/compose#13525) - [@​dgageot](https://github.com/dgageot) made their first contribution in [#​13531](docker/compose#13531) **Full Changelog**: <docker/compose@v5.0.1...v5.0.2> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever MR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi44Ni4xIiwidXBkYXRlZEluVmVyIjoiNDIuODYuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiUmVub3ZhdGUgQm90IiwiYXV0b21hdGlvbjpib3QtYXV0aG9yZWQiLCJkZXBlbmRlbmN5LXR5cGU6OnBhdGNoIl19-->
Fixed progress UI to adapt to terminal width by @ndeloof in docker/compose#13519 Removed warning when no explicit build has been requested. by @ndeloof in docker/compose#13493 Restored runtime_flags support in models by @ilopezluna in docker/compose#13460 Added service name completion to down command by @bmo-at in docker/compose#13470 Fixed tilde in --env-file paths expanded to user home directory by @tensorworkerr in docker/compose#13510 Handle healthcheck.disable: true by @stavros-k in docker/compose#13494 Fixed shutdown and error handling for large file change batches in watch by @amyssnippet in docker/compose#13525 Signed-off-by: David Mandy <smallprogramzhusir@gmail.com>
When using
--env-file=/~.env, the tilde was not expanded to the user's home directory. Instead, it was treated as a literal character and resolved relative to the current working directory, resulting in errors like "couldn't find envfile: /current/dir/~/.env".This adds an ExpandUser function that expands ~ to the home directory before converting relative paths to absolute paths.
Fixes #13508
What I did
-Added ExpandUser() function in internal/paths/paths.go that expands a leading ~ to the user's home directory using os.UserHomeDir()
-Updated the env file path processing in cmd/compose/compose.go to call ExpandUser() before checking if paths are absolute
-Added unit tests for the new function covering various edge cases (empty string, ~ only, ~/.env, ~/subdir/.env, absolute paths, relative paths, tilde in middle of path, ~otheruser/... syntax)
Related issue
Fixes #13508
Contribution by Gittensor, see my contribution statistics at https://gittensor.io/miners/details?githubId=178221229