Introduced NimbleLink object with its read/write routines

This commit is contained in:
Yuriy Glukhov 2017-09-09 23:33:31 +03:00
commit 88b4a9ed8a
2 changed files with 19 additions and 7 deletions

View file

@ -620,9 +620,9 @@ proc listPaths(options: Options) =
if not nimbleFile.existsFile:
let nimbleLinkFile = path / name.addFileExt("nimble-link")
if fileExists(nimbleLinkFile):
let lns = readFile(nimbleLinkFile).splitLines()
nimbleFile = lns[0]
nimbleLinkTargetPath = lns[1]
let lnk = readNimbleLink(nimbleLinkFile)
nimbleFile = lnk.nimbleFilePath
nimbleLinkTargetPath = lnk.packageDir
if nimbleFile.existsFile:
var pkgInfo = getPkgInfo(path, options)
@ -873,9 +873,9 @@ proc developFromDir(dir: string, options: Options) =
# need to be read. This will mean that users will need to re-run
# `nimble develop` if they change their `srcDir` but I think it's a worthy
# compromise.
let contents = pkgInfo.myPath & "\n" & pkgInfo.getRealDir()
let nimbleLinkPath = pkgDestDir / pkgInfo.name.addFileExt("nimble-link")
writeFile(nimbleLinkPath, contents)
writeNimbleLink(nimbleLinkPath,
NimbleLink(nimbleFilePath: pkgInfo.myPath, packageDir: pkgInfo.getRealDir()))
# Save a nimblemeta.json file.
saveNimbleMeta(pkgDestDir, "file://" & dir, vcsRevisionInDir(dir),

View file

@ -27,6 +27,10 @@ type
MetaData* = object
url*: string
NimbleLink* = object
nimbleFilePath*: string
packageDir*: string
proc initPackageInfo*(path: string): PackageInfo =
result.myPath = path
result.specialVersion = ""
@ -141,6 +145,15 @@ proc readMetaData*(path: string): MetaData =
let jsonmeta = parseJson(cont)
result.url = jsonmeta["url"].str
proc readNimbleLink*(nimbleLinkPath: string): NimbleLink =
let s = readFile(nimbleLinkPath).splitLines()
result.nimbleFilePath = s[0]
result.packageDir = s[1]
proc writeNimbleLink*(nimbleLinkPath: string, contents: NimbleLink) =
let c = contents.nimbleFilePath & "\n" & contents.packageDir
writeFile(nimbleLinkPath, c)
proc needsRefresh*(options: Options): bool =
## Determines whether a ``nimble refresh`` is needed.
##
@ -298,8 +311,7 @@ proc findNimbleFile*(dir: string; error: bool): string =
if result.splitFile.ext == ".nimble-link":
# Return the path of the real .nimble file.
let lines = readFile(result).splitLines()
result = lines[0]
result = readNimbleLink(result).nimbleFilePath
if not fileExists(result):
raiseNimbleError("The .nimble-link file is pointing to a missing" &
" file: " & result)