* fix #17393 getHomeDir and expandTilde should not include trailing `/` * changelog
This commit is contained in:
parent
4d3f3513e2
commit
bebf2ce24a
2 changed files with 14 additions and 2 deletions
|
|
@ -234,6 +234,8 @@
|
||||||
- Added `ZZZ` and `ZZZZ` patterns to `times.nim` `DateTime` parsing, to match time
|
- Added `ZZZ` and `ZZZZ` patterns to `times.nim` `DateTime` parsing, to match time
|
||||||
zone offsets without colons, e.g. `UTC+7 -> +0700`.
|
zone offsets without colons, e.g. `UTC+7 -> +0700`.
|
||||||
|
|
||||||
|
- In `std/os`, `getHomeDir` and `expandTilde` now do not include trailing `DirSep`, unless `-d:nimLegacyHomeDir` is specified
|
||||||
|
(for a transition period).
|
||||||
|
|
||||||
|
|
||||||
## Language changes
|
## Language changes
|
||||||
|
|
|
||||||
|
|
@ -901,9 +901,14 @@ proc getHomeDir*(): string {.rtl, extern: "nos$1",
|
||||||
## * `setCurrentDir proc <#setCurrentDir,string>`_
|
## * `setCurrentDir proc <#setCurrentDir,string>`_
|
||||||
runnableExamples:
|
runnableExamples:
|
||||||
assert getHomeDir() == expandTilde("~")
|
assert getHomeDir() == expandTilde("~")
|
||||||
|
# `getHomeDir()` doesn't end in `DirSep` even if `$HOME` (on posix) or
|
||||||
|
# `$USERPROFILE` (on windows) does, unless `-d:nimLegacyHomeDir` is specified.
|
||||||
|
from std/strutils import endsWith
|
||||||
|
assert not getHomeDir().endsWith DirSep
|
||||||
|
|
||||||
when defined(windows): return getEnv("USERPROFILE") & "\\"
|
when defined(windows): result = getEnv("USERPROFILE")
|
||||||
else: return getEnv("HOME") & "/"
|
else: result = getEnv("HOME")
|
||||||
|
result.normalizePathEnd(trailingSep = defined(nimLegacyHomeDir))
|
||||||
|
|
||||||
proc getConfigDir*(): string {.rtl, extern: "nos$1",
|
proc getConfigDir*(): string {.rtl, extern: "nos$1",
|
||||||
tags: [ReadEnvEffect, ReadIOEffect].} =
|
tags: [ReadEnvEffect, ReadIOEffect].} =
|
||||||
|
|
@ -999,6 +1004,8 @@ proc expandTilde*(path: string): string {.
|
||||||
##
|
##
|
||||||
## Windows: this is still supported despite Windows platform not having this
|
## Windows: this is still supported despite Windows platform not having this
|
||||||
## convention; also, both ``~/`` and ``~\`` are handled.
|
## convention; also, both ``~/`` and ``~\`` are handled.
|
||||||
|
##
|
||||||
|
## .. warning:: `~bob` and `~bob/` are not yet handled correctly.
|
||||||
##
|
##
|
||||||
## See also:
|
## See also:
|
||||||
## * `getHomeDir proc <#getHomeDir>`_
|
## * `getHomeDir proc <#getHomeDir>`_
|
||||||
|
|
@ -1010,6 +1017,9 @@ proc expandTilde*(path: string): string {.
|
||||||
assert expandTilde("~" / "appname.cfg") == getHomeDir() / "appname.cfg"
|
assert expandTilde("~" / "appname.cfg") == getHomeDir() / "appname.cfg"
|
||||||
assert expandTilde("~/foo/bar") == getHomeDir() / "foo/bar"
|
assert expandTilde("~/foo/bar") == getHomeDir() / "foo/bar"
|
||||||
assert expandTilde("/foo/bar") == "/foo/bar"
|
assert expandTilde("/foo/bar") == "/foo/bar"
|
||||||
|
assert expandTilde("~") == getHomeDir()
|
||||||
|
from std/strutils import endsWith
|
||||||
|
assert not expandTilde("~").endsWith(DirSep)
|
||||||
|
|
||||||
if len(path) == 0 or path[0] != '~':
|
if len(path) == 0 or path[0] != '~':
|
||||||
result = path
|
result = path
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue