mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-18 21:40:32 +00:00
added selfExe and selfExec for NimScript support
This commit is contained in:
@@ -130,6 +130,8 @@ proc setupVM*(module: PSym; scriptName: string): PEvalContext =
|
||||
elif not isAbsolute(val):
|
||||
val = vthisDir / val
|
||||
gModuleOverrides[key] = val
|
||||
cbconf selfExe:
|
||||
setResult(a, os.getAppFilename())
|
||||
|
||||
proc runNimScript*(scriptName: string; freshDefines=true) =
|
||||
passes.gIncludeFile = includeModule
|
||||
|
||||
@@ -122,6 +122,10 @@ proc existsDir*(dir: string): bool =
|
||||
## An alias for ``dirExists``.
|
||||
dirExists(dir)
|
||||
|
||||
proc selfExe*(): string =
|
||||
## Returns the currently running nim or nimble executable.
|
||||
builtin
|
||||
|
||||
proc toExe*(filename: string): string =
|
||||
## On Windows adds ".exe" to `filename`, else returns `filename` unmodified.
|
||||
(when defined(windows): filename & ".exe" else: filename)
|
||||
@@ -208,6 +212,15 @@ proc exec*(command: string, input: string, cache = "") {.
|
||||
log "exec: " & command:
|
||||
echo staticExec(command, input, cache)
|
||||
|
||||
proc selfExec*(command: string) =
|
||||
## Executes an external command with the current nim/nimble executable.
|
||||
## ``Command`` must not contain the "nim " part.
|
||||
let c = selfExe() & " " & command
|
||||
log "exec: " & c:
|
||||
if rawExec(c) != 0:
|
||||
raise newException(OSError, "FAILED: " & c)
|
||||
checkOsError()
|
||||
|
||||
proc put*(key, value: string) =
|
||||
## Sets a configuration 'key' like 'gcc.options.always' to its value.
|
||||
builtin
|
||||
|
||||
Reference in New Issue
Block a user