From 8822dffd2b9b462018655baf745c6c2626565087 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Wed, 4 Oct 2023 00:03:07 +0100 Subject: [PATCH] Add srcDir to depends output --- nim_lk.nimble | 2 +- src/Tupfile | 2 +- src/nim_lk.nim | 19 ++++++++++++------- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/nim_lk.nimble b/nim_lk.nimble index 198f94b..667b876 100644 --- a/nim_lk.nimble +++ b/nim_lk.nimble @@ -3,6 +3,6 @@ bin = @["nim_lk"] description = "Tool for generating Nim lockfiles" license = "BSD-3-Clause" srcDir = "src" -version = "20231001" +version = "20231004" requires "nim >= 2.0.0" diff --git a/src/Tupfile b/src/Tupfile index beda37a..2f97df3 100644 --- a/src/Tupfile +++ b/src/Tupfile @@ -1,2 +1,2 @@ include_rules -: nim_lk.nim |> !nim_bin |> +: nim_lk.nim |> !nim_bin |> $(BIN_DIR)/nim_lk | $(BIN_DIR)/ diff --git a/src/nim_lk.nim b/src/nim_lk.nim index a24fd88..9576cae 100644 --- a/src/nim_lk.nim +++ b/src/nim_lk.nim @@ -54,7 +54,7 @@ proc matchRev(url: string; wanted: VersionRange): tuple[tag: string, rev: string if result.rev == "" and pairs.len > 0: result = pairs[pairs.high] -proc collectMetadata(data: JsonNode) = +proc collectMetadata(data: JsonNode; options: Options) = let storePath = data["path"].getStr var packageNames = newJArray() for (kind, path) in walkDir(storePath): @@ -64,8 +64,12 @@ proc collectMetadata(data: JsonNode) = if packageNames.len == 0: quit("no .nimble files found in " & storePath) data["packages"] = packageNames + var + nimbleFilePath = findNimbleFile(storePath, true) + pkg = readPackageInfo(nimbleFilePath, options) + data["srcDir"] = %pkg.srcDir -proc prefechtGit(uri: Uri; version: VersionRange): JsonNode = +proc prefetchGit(uri: Uri; version: VersionRange; options: Options): JsonNode = var uri = uri subdir = "" @@ -93,7 +97,7 @@ proc prefechtGit(uri: Uri; version: VersionRange): JsonNode = result["method"] = %"git" if tag != "": result["ref"] = %tag - collectMetadata(result) + collectMetadata(result, options) proc containsPackageUri(lockAttrs: JsonNode; pkgUri: string): bool = for e in lockAttrs.items: @@ -159,11 +163,12 @@ proc generateLockfile(options: Options): JsonNode = if pkg.name == "nim" or pkg.name == "compiler": continue var uri = parseUri(pkg.name) - if uri.scheme == "" and not deps.containsPackage(pkg.name): - pending.addLast(pkg) + if uri.scheme == "": + if not deps.containsPackage(pkg.name): + pending.addLast(pkg) elif not deps.containsPackageUri(pkg.name): if uri.isGitUrl: - pkgData = prefechtGit(uri, pkg.ver) + pkgData = prefetchGit(uri, pkg.ver, options) else: quit("unhandled URI " & $uri) collectRequires(pending, options, pkgData["path"].getStr) @@ -176,7 +181,7 @@ proc generateLockfile(options: Options): JsonNode = case info.meth of "git": stderr.writeLine "prefetch ", info.uri - var pkgData = prefechtGit(parseUri info.uri, pkg.ver) + var pkgData = prefetchGit(parseUri info.uri, pkg.ver, options) collectRequires(pending, options, pkgData["path"].getStr) deps.add pkgData else: