@@ -7,10 +7,24 @@ const errorPrefix = "Script Error: "
77type 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
1529proc 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+
2443proc 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