- Notifications
You must be signed in to change notification settings - Fork 1.5k
/
Copy pathstaticos.nim
38 lines (33 loc) · 1.6 KB
/
staticos.nim
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
## This module implements path handling like os module but works at only compile-time.
## This module works even when cross compiling to OS that is not supported by os module.
whendefined(nimPreviewSlimSystem):
import std/assertions
procstaticFileExists*(filename: string): bool {.compileTime.} =
## Returns true if `filename` exists and is a regular file or symlink.
##
## Directories, device files, named pipes and sockets return false.
raiseAssert"implemented in the vmops"
procstaticDirExists*(dir: string): bool {.compileTime.} =
## Returns true if the directory `dir` exists. If `dir` is a file, false
## is returned. Follows symlinks.
raiseAssert"implemented in the vmops"
type
PathComponent*=enum## Enumeration specifying a path component.
##
## See also:
## * `walkDirRec iterator`_
## * `FileInfo object`_
pcFile, ## path refers to a file
pcLinkToFile, ## path refers to a symbolic link to a file
pcDir, ## path refers to a directory
pcLinkToDir ## path refers to a symbolic link to a directory
procstaticWalkDir*(dir: string; relative =false): seq[
tuple[kind: PathComponent, path: string]] {.compileTime.} =
## Walks over the directory `dir` and returns a seq with each directory or
## file in `dir`. The component type and full path for each item are returned.
##
## Walking is not recursive.
## * If `relative` is true (default: false)
## the resulting path is shortened to be relative to ``dir``,
## otherwise the full path is returned.
raiseAssert"implemented in the vmops"