flix

0.69.3

Fs.FilePermission

eff FilePermissionSource

An effect used to check file permissions (readable, writable, executable).

Operations

def isExecutable(f: String): Result[IoError, Bool] \ FilePermission Source

Returns true if the given file f is executable.

def isReadable(f: String): Result[IoError, Bool] \ FilePermission Source

Returns true if the given file f is readable.

def isWritable(f: String): Result[IoError, Bool] \ FilePermission Source

Returns true if the given file f is writable.

Definitions

def handle(f: a -> b \ ef): a -> b \ (ef - FilePermission) + IO Source

Handles the FilePermission effect of the given function f.

In other words, re-interprets the FilePermission effect using the IO effect.

def runWithFileStat(f: Unit -> a \ ef): a \ (ef - FilePermission) + FileStat Source

Handles the FilePermission effect of the given function f using the FileStat effect.

@DefaultHandler
def runWithIO(f: Unit -> a \ ef): a \ (ef - FilePermission) + IO Source

Runs the FilePermission effect of the given function f.

In other words, re-interprets the FilePermission effect using the IO effect.

def withAllowGlob(patterns: Nel[String], f: Unit -> a \ ef): a \ (ef - FilePermission) + FilePermission Source

Middleware that intercepts the FilePermission effect, validating that all file paths match at least one of the given glob patterns. Rejects paths that do not match with a PermissionDenied error.

def withAllowList(allowedDirs: Nel[String], f: Unit -> a \ ef): a \ (ef - FilePermission) + FilePermission Source

Middleware that intercepts the FilePermission effect, validating that all file paths resolve within one of the given allowedDirs. Rejects paths outside the allow list with a PermissionDenied error.

def withBaseDir(baseDir: String, f: Unit -> a \ ef): a \ (ef - FilePermission) + FilePermission Source

Middleware that intercepts the FilePermission effect, resolving all file paths relative to the given baseDir using Java's Path.resolve semantics.

Absolute paths are passed through unchanged.

def withChroot(chrootDir: String, f: Unit -> a \ ef): a \ (ef - FilePermission) + FilePermission Source

Middleware that intercepts the FilePermission effect, validating that all file paths resolve within the given chrootDir. Rejects paths that escape the chroot with a PermissionDenied error.

def withDenyGlob(patterns: Nel[String], f: Unit -> a \ ef): a \ (ef - FilePermission) + FilePermission Source

Middleware that intercepts the FilePermission effect, validating that all file paths do not match any of the given glob patterns. Rejects paths that match a denied pattern with a PermissionDenied error.

def withDenyList(deniedDirs: Nel[String], f: Unit -> a \ ef): a \ (ef - FilePermission) + FilePermission Source

Middleware that intercepts the FilePermission effect, validating that all file paths do not resolve within any of the given deniedDirs. Rejects paths inside a denied directory with a PermissionDenied error.

def withLogging(f: Unit -> a \ ef): a \ (ef - FilePermission) + FilePermission + Logger Source

Middleware that intercepts the FilePermission effect, logging each operation and its result via the Logger effect.

Successful operations are logged at Debug level; errors at Warn.