Better download dir names for URL dependencies.
This commit is contained in:
parent
b266132da0
commit
e14ffd5628
3 changed files with 39 additions and 5 deletions
|
|
@ -323,14 +323,14 @@ proc installFromDir(dir: string, latest: bool, options: TOptions): string =
|
||||||
|
|
||||||
proc downloadPkg(url: string, verRange: PVersionRange,
|
proc downloadPkg(url: string, verRange: PVersionRange,
|
||||||
downMethod: TDownloadMethod): string =
|
downMethod: TDownloadMethod): string =
|
||||||
let downloadDir = (getTempDir() / "babel" / "url_unknown")
|
let downloadDir = (getTempDir() / "babel" / getDownloadDirName(url, verRange))
|
||||||
if not existsDir(getTempDir() / "babel"): createDir(getTempDir() / "babel")
|
if not existsDir(getTempDir() / "babel"): createDir(getTempDir() / "babel")
|
||||||
echo("Downloading ", url, " into ", downloadDir, " using ", downMethod, "...")
|
echo("Downloading ", url, " into ", downloadDir, " using ", downMethod, "...")
|
||||||
doDownload(url, downloadDir, verRange, downMethod)
|
doDownload(url, downloadDir, verRange, downMethod)
|
||||||
result = downloadDir
|
result = downloadDir
|
||||||
|
|
||||||
proc downloadPkg(pkg: TPackage, verRange: PVersionRange): string =
|
proc downloadPkg(pkg: TPackage, verRange: PVersionRange): string =
|
||||||
let downloadDir = (getTempDir() / "babel" / pkg.name)
|
let downloadDir = (getTempDir() / "babel" / getDownloadDirName(pkg, verRange))
|
||||||
if not existsDir(getTempDir() / "babel"): createDir(getTempDir() / "babel")
|
if not existsDir(getTempDir() / "babel"): createDir(getTempDir() / "babel")
|
||||||
let downMethod = pkg.downloadMethod.getDownloadMethod()
|
let downMethod = pkg.downloadMethod.getDownloadMethod()
|
||||||
echo("Downloading ", pkg.name, " into ", downloadDir, " using ", downMethod, "...")
|
echo("Downloading ", pkg.name, " into ", downloadDir, " using ", downMethod, "...")
|
||||||
|
|
|
||||||
25
tools.nim
25
tools.nim
|
|
@ -2,8 +2,8 @@
|
||||||
# BSD License. Look at license.txt for more info.
|
# BSD License. Look at license.txt for more info.
|
||||||
#
|
#
|
||||||
# Various miscellaneous utility functions reside here.
|
# Various miscellaneous utility functions reside here.
|
||||||
import osproc, pegs, strutils, os
|
import osproc, pegs, strutils, os, parseurl
|
||||||
import version, common
|
import version, common, packageinfo
|
||||||
|
|
||||||
# TODO: Merge with common.nim?
|
# TODO: Merge with common.nim?
|
||||||
|
|
||||||
|
|
@ -46,3 +46,24 @@ proc changeRoot*(origRoot, newRoot, path: string): string =
|
||||||
else:
|
else:
|
||||||
raise newException(EInvalidValue,
|
raise newException(EInvalidValue,
|
||||||
"Cannot change root of path: Path does not begin with original root.")
|
"Cannot change root of path: Path does not begin with original root.")
|
||||||
|
|
||||||
|
proc getDownloadDirName*(url: string, verRange: PVersionRange): string =
|
||||||
|
## Creates a directory name based on the specified ``url``
|
||||||
|
result = ""
|
||||||
|
let purl = parseUrl(url)
|
||||||
|
for i in purl.hostname:
|
||||||
|
case i
|
||||||
|
of strutils.Letters, strutils.Digits:
|
||||||
|
result.add i
|
||||||
|
else: nil
|
||||||
|
result.add "_"
|
||||||
|
for i in purl.path:
|
||||||
|
case i
|
||||||
|
of strutils.Letters, strutils.Digits:
|
||||||
|
result.add i
|
||||||
|
else: nil
|
||||||
|
result.add "_"
|
||||||
|
result.add getSimpleString(verRange)
|
||||||
|
|
||||||
|
proc getDownloadDirName*(pkg: TPackage, verRange: PVersionRange): string =
|
||||||
|
result = pkg.name & "_" & verRange.getSimpleString
|
||||||
13
version.nim
13
version.nim
|
|
@ -202,6 +202,19 @@ proc `$`*(verRange: PVersionRange): String =
|
||||||
|
|
||||||
result.add(string(verRange.ver))
|
result.add(string(verRange.ver))
|
||||||
|
|
||||||
|
proc getSimpleString*(verRange: PVersionRange): string =
|
||||||
|
## Gets a string with no special symbols and spaces. Used for dir name creation
|
||||||
|
## in tools.nim
|
||||||
|
case verRange.kind
|
||||||
|
of verSpecial:
|
||||||
|
result = $verRange.spe
|
||||||
|
of verLater, verEarlier, verEqLater, verEqEarlier, verEq:
|
||||||
|
result = $verRange.ver
|
||||||
|
of verIntersect:
|
||||||
|
result = getSimpleString(verRange.verILeft) & "_" & getSimpleString(verRange.verIRight)
|
||||||
|
of verAny:
|
||||||
|
result = ""
|
||||||
|
|
||||||
proc newVRAny*(): PVersionRange =
|
proc newVRAny*(): PVersionRange =
|
||||||
new(result)
|
new(result)
|
||||||
result.kind = verAny
|
result.kind = verAny
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue