diff options
Diffstat (limited to 'compiler/nimconf.nim')
-rw-r--r-- | compiler/nimconf.nim | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/compiler/nimconf.nim b/compiler/nimconf.nim index 05f234ce6..b6ec1bbc8 100644 --- a/compiler/nimconf.nim +++ b/compiler/nimconf.nim @@ -248,11 +248,16 @@ proc loadConfigs*(cfg: RelativeFile; cache: IdentCache; conf: ConfigRef; idgen: if readConfigFile(configPath, cache, conf): configFiles.add(configPath) - template runNimScriptIfExists(path: AbsoluteFile) = + template runNimScriptIfExists(path: AbsoluteFile, isMain = false) = let p = path # eval once - if fileExists(p): + var s: PLLStream + if isMain and optWasNimscript in conf.globalOptions: + if conf.projectIsStdin: s = stdin.llStreamOpen + elif conf.projectIsCmd: s = llStreamOpen(conf.cmdInput) + if s == nil and fileExists(p): s = llStreamOpen(p, fmRead) + if s != nil: configFiles.add(p) - runNimScript(cache, p, idgen, freshDefines = false, conf) + runNimScript(cache, p, idgen, freshDefines = false, conf, s) if optSkipSystemConfigFile notin conf.globalOptions: readConfigFile(getSystemConfigPath(conf, cfg)) @@ -288,19 +293,19 @@ proc loadConfigs*(cfg: RelativeFile; cache: IdentCache; conf: ConfigRef; idgen: runNimScriptIfExists(pd / DefaultConfigNims) let scriptFile = conf.projectFull.changeFileExt("nims") - let isMain = scriptFile == conf.projectFull + let scriptIsProj = scriptFile == conf.projectFull template showHintConf = for filename in configFiles: # delayed to here so that `hintConf` is honored rawMessage(conf, hintConf, filename.string) - if isMain: + if scriptIsProj: showHintConf() configFiles.setLen 0 if conf.command != "nimsuggest": - runNimScriptIfExists(scriptFile) + runNimScriptIfExists(scriptFile, isMain = true) else: - if not isMain: - runNimScriptIfExists(scriptFile) + if not scriptIsProj: + runNimScriptIfExists(scriptFile, isMain = true) else: # 'nimsuggest foo.nims' means to just auto-complete the NimScript file discard |