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:
|
if not nimbleFile.existsFile:
|
||||||
let nimbleLinkFile = path / name.addFileExt("nimble-link")
|
let nimbleLinkFile = path / name.addFileExt("nimble-link")
|
||||||
if fileExists(nimbleLinkFile):
|
if fileExists(nimbleLinkFile):
|
||||||
let lns = readFile(nimbleLinkFile).splitLines()
|
let lnk = readNimbleLink(nimbleLinkFile)
|
||||||
nimbleFile = lns[0]
|
nimbleFile = lnk.nimbleFilePath
|
||||||
nimbleLinkTargetPath = lns[1]
|
nimbleLinkTargetPath = lnk.packageDir
|
||||||
|
|
||||||
if nimbleFile.existsFile:
|
if nimbleFile.existsFile:
|
||||||
var pkgInfo = getPkgInfo(path, options)
|
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
|
# 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
|
# `nimble develop` if they change their `srcDir` but I think it's a worthy
|
||||||
# compromise.
|
# compromise.
|
||||||
let contents = pkgInfo.myPath & "\n" & pkgInfo.getRealDir()
|
|
||||||
let nimbleLinkPath = pkgDestDir / pkgInfo.name.addFileExt("nimble-link")
|
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.
|
# Save a nimblemeta.json file.
|
||||||
saveNimbleMeta(pkgDestDir, "file://" & dir, vcsRevisionInDir(dir),
|
saveNimbleMeta(pkgDestDir, "file://" & dir, vcsRevisionInDir(dir),
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,10 @@ type
|
||||||
MetaData* = object
|
MetaData* = object
|
||||||
url*: string
|
url*: string
|
||||||
|
|
||||||
|
NimbleLink* = object
|
||||||
|
nimbleFilePath*: string
|
||||||
|
packageDir*: string
|
||||||
|
|
||||||
proc initPackageInfo*(path: string): PackageInfo =
|
proc initPackageInfo*(path: string): PackageInfo =
|
||||||
result.myPath = path
|
result.myPath = path
|
||||||
result.specialVersion = ""
|
result.specialVersion = ""
|
||||||
|
|
@ -141,6 +145,15 @@ proc readMetaData*(path: string): MetaData =
|
||||||
let jsonmeta = parseJson(cont)
|
let jsonmeta = parseJson(cont)
|
||||||
result.url = jsonmeta["url"].str
|
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 =
|
proc needsRefresh*(options: Options): bool =
|
||||||
## Determines whether a ``nimble refresh`` is needed.
|
## Determines whether a ``nimble refresh`` is needed.
|
||||||
##
|
##
|
||||||
|
|
@ -298,8 +311,7 @@ proc findNimbleFile*(dir: string; error: bool): string =
|
||||||
|
|
||||||
if result.splitFile.ext == ".nimble-link":
|
if result.splitFile.ext == ".nimble-link":
|
||||||
# Return the path of the real .nimble file.
|
# Return the path of the real .nimble file.
|
||||||
let lines = readFile(result).splitLines()
|
result = readNimbleLink(result).nimbleFilePath
|
||||||
result = lines[0]
|
|
||||||
if not fileExists(result):
|
if not fileExists(result):
|
||||||
raiseNimbleError("The .nimble-link file is pointing to a missing" &
|
raiseNimbleError("The .nimble-link file is pointing to a missing" &
|
||||||
" file: " & result)
|
" file: " & result)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue