Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
genotrance authored Mar 12, 2020
1 parent 64995db commit bbc231f
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 9 deletions.
4 changes: 2 additions & 2 deletions compiler/scriptconfig.nim
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
22 changes: 15 additions & 7 deletions lib/system/nimscript.nim
Original file line number Diff line number Diff line change
Expand Up @@ -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) {.
Expand All @@ -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 =
Expand Down Expand Up @@ -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:
Expand Down

0 comments on commit bbc231f

Please sign in to comment.