Add a few useful os calls to nimscript (#7442)

This commit is contained in:
genotrance 2018-04-10 11:50:23 -05:00 • committed by Andreas Rumpf
commit f6c8f97fe8
4 changed files with 81 additions and 2 deletions

View file

@ -38,13 +38,19 @@ proc removeFile(dir: string) {.
tags: [ReadIOEffect, WriteIOEffect], raises: [OSError].} = builtin
proc moveFile(src, dest: string) {.
tags: [ReadIOEffect, WriteIOEffect], raises: [OSError].} = builtin
proc moveDir(src, dest: string) {.
tags: [ReadIOEffect, WriteIOEffect], raises: [OSError].} = builtin
proc copyFile(src, dest: string) {.
tags: [ReadIOEffect, WriteIOEffect], raises: [OSError].} = builtin
proc copyDir(src, dest: string) {.
tags: [ReadIOEffect, WriteIOEffect], raises: [OSError].} = builtin
proc createDir(dir: string) {.tags: [WriteIOEffect], raises: [OSError].} =
builtin
proc getOsError: string = builtin
proc setCurrentDir(dir: string) = builtin
proc getCurrentDir(): string = builtin
proc getCurrentDir*(): string =
## Retrieves the current working directory.
builtin
proc rawExec(cmd: string): int {.tags: [ExecIOEffect], raises: [OSError].} =
builtin
@ -117,7 +123,7 @@ proc existsEnv*(key: string): bool {.tags: [ReadIOEffect].} =
proc putEnv*(key, val: string) {.tags: [WriteIOEffect].} =
## Sets the value of the environment variable named key to val.
builtin
proc fileExists*(filename: string): bool {.tags: [ReadIOEffect].} =
## Checks if the file exists.
builtin
@ -206,12 +212,24 @@ proc mvFile*(`from`, to: string) {.raises: [OSError].} =
moveFile `from`, to
checkOsError()
proc mvDir*(`from`, to: string) {.raises: [OSError].} =
## Moves the dir `from` to `to`.
log "mvDir: " & `from` & ", " & to:
moveDir `from`, to
checkOsError()
proc cpFile*(`from`, to: string) {.raises: [OSError].} =
## Copies the file `from` to `to`.
log "cpFile: " & `from` & ", " & to:
copyFile `from`, to
checkOsError()
proc cpDir*(`from`, to: string) {.raises: [OSError].} =
## Copies the dir `from` to `to`.
log "cpDir: " & `from` & ", " & to:
copyDir `from`, to
checkOsError()
proc exec*(command: string) =
## Executes an external process.
log "exec: " & command:
@ -265,6 +283,12 @@ proc cd*(dir: string) {.raises: [OSError].} =
setCurrentDir(dir)
checkOsError()
proc findExe*(bin: string): string =
## Searches for bin in the current working directory and then in directories
## listed in the PATH environment variable. Returns "" if the exe cannot be
## found.
builtin
template withDir*(dir: string; body: untyped): untyped =
## Changes the current directory temporarily.
##