This commit is contained in:
genotrance
2020-03-12 02:53:11 -05:00
committed by GitHub
parent 64995db4fd
commit bbc231f8e0
2 changed files with 17 additions and 9 deletions

View File

@@ -57,9 +57,9 @@ proc setupVM*(module: PSym; cache: IdentCache; scriptName: string;
# Idea: Treat link to file as a file, but ignore link to directory to prevent
# endless recursions out of the box.
cbos listFiles:
cbos listFilesImpl:
listDirs(a, {pcFile, pcLinkToFile})
cbos listDirs:
cbos listDirsImpl:
listDirs(a, {pcDir})
cbos removeDir:
if defined(nimsuggest) or graph.config.cmd == cmdCheck:

View File

@@ -26,13 +26,10 @@ template builtin = discard
# We know the effects better than the compiler:
{.push hint[XDeclaredButNotUsed]: off.}
proc listDirs*(dir: string): seq[string] =
## Lists all the subdirectories (non-recursively) in the directory `dir`.
builtin
proc listFiles*(dir: string): seq[string] =
## Lists all the files (non-recursively) in the directory `dir`.
builtin
proc listDirsImpl(dir: string): seq[string] {.
tags: [ReadIOEffect], raises: [OSError].} = builtin
proc listFilesImpl(dir: string): seq[string] {.
tags: [ReadIOEffect], raises: [OSError].} = builtin
proc removeDir(dir: string) {.
tags: [ReadIOEffect, WriteIOEffect], raises: [OSError].} = builtin
proc removeFile(dir: string) {.
@@ -47,6 +44,7 @@ proc copyDir(src, dest: string) {.
tags: [ReadIOEffect, WriteIOEffect], raises: [OSError].} = builtin
proc createDir(dir: string) {.tags: [WriteIOEffect], raises: [OSError].} =
builtin
proc getError: string = builtin
proc setCurrentDir(dir: string) = builtin
proc getCurrentDir*(): string =
@@ -196,6 +194,16 @@ template log(msg: string, body: untyped) =
if mode != ScriptMode.WhatIf:
body
proc listDirs*(dir: string): seq[string] =
## Lists all the subdirectories (non-recursively) in the directory `dir`.
result = listDirsImpl(dir)
checkOsError()
proc listFiles*(dir: string): seq[string] =
## Lists all the files (non-recursively) in the directory `dir`.
result = listFilesImpl(dir)
checkOsError()
proc rmDir*(dir: string) {.raises: [OSError].} =
## Removes the directory `dir`.
log "rmDir: " & dir: