Skip to content

Commit 2973de9

Browse files
committed
Nims backend adds nimble's pkgs2 dirs to the import paths.
1 parent ff46054 commit 2973de9

File tree

1 file changed

+28
-10
lines changed

1 file changed

+28
-10
lines changed

inimpkg/nimsBackend.nim

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,24 @@ const errorPrefix = "Script Error: "
77
type NimsBackend* = object
88
addins: VMAddins
99

10-
proc nimsBackend*(): NimsBackend =
11-
#exportTo(module, help)
12-
let addins = implNimScriptModule(module)
13-
NimsBackend(addins: addins)
10+
proc getNimblePackagesDir(): string =
11+
var nimbleDir = getEnv("NIMBLE_DIR")
12+
13+
if nimbleDir.len == 0:
14+
nimbleDir = getHomeDir() / ".nimble"
15+
16+
result = nimbleDir / "pkgs2"
17+
18+
proc getImportPaths(): seq[string] =
19+
let nimblePkgsDir = getNimblePackagesDir()
20+
result = @[ getCurrentDir() ]
21+
22+
if not nimblePkgsDir.dirExists:
23+
return result
24+
25+
for entry in walkDir(nimblePkgsDir, relative = false):
26+
if entry.kind == pcDir:
27+
result.add(entry.path)
1428

1529
proc formatResult(exitCode: int, output: string): (string, int) =
1630
let hasFailed = exitCode != 0
@@ -21,19 +35,23 @@ proc formatResult(exitCode: int, output: string): (string, int) =
2135
else:
2236
(output, exitCode)
2337

38+
proc nimsBackend*(): NimsBackend =
39+
#exportTo(module, help)
40+
let addins = implNimScriptModule(module)
41+
NimsBackend(addins: addins)
42+
2443
proc runCode*(self: NimsBackend, source: string): (string, int) =
2544
let tempFile = getTempDir() / "nimrepl_capture.txt"
2645
let oldStdout = stdout
2746
let outFile = open(tempFile, fmWrite)
28-
stdout = outFile
47+
let scriptPath = NimScriptPath(source)
48+
let searchPaths = getImportPaths()
2949
var exitCode = 0
50+
stdout = outFile
3051

3152
try:
32-
let interpreterOpt = loadScript(
33-
NimScriptPath(source),
34-
self.addins,
35-
searchPaths = @[ getCurrentDir() ]
36-
)
53+
let interpreterOpt = loadScript(scriptPath, self.addins, searchPaths = searchPaths)
54+
3755
if interpreterOpt.isNone:
3856
exitCode = 1
3957
except:

0 commit comments

Comments
 (0)