diff --git a/src/nimble.nim b/src/nimble.nim index a3d0096..9b9de0b 100644 --- a/src/nimble.nim +++ b/src/nimble.nim @@ -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), diff --git a/src/nimblepkg/packageinfo.nim b/src/nimblepkg/packageinfo.nim index 85821d5..fecdae0 100644 --- a/src/nimblepkg/packageinfo.nim +++ b/src/nimblepkg/packageinfo.nim @@ -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)