Introduced NimbleLink object with its read/write routines
This commit is contained in:
parent
9068e8e43a
commit
88b4a9ed8a
2 changed files with 19 additions and 7 deletions
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue