symbolic-link-0.1.1.1: Symlink functions

Copyright(c) Fuzz Leonard 2019
LicenseBSD-3
Maintainerfuzz@kt-22.com
Stabilityexperimental
PortabilityPOSIX
Safe HaskellSafe
LanguageHaskell2010

System.SymbolicLink

Description

SymbolicLink provides tools for working with symbolic links on POSIX systems.

The executable symlink changes to the user's home directory, reads in a sequence of source/target mappings from a YAML file in .symlinks and attempts to create them. If the target exists and is a symbolic link it will be removed and replaced, otherwise symlink will refuse to clobber it.

The function filePathExist works like fileExist from System.Posix.Files or doesPathExist from System.Directory but does not follow symlinks, thus making it suitable for working with unreferenced symlinks. Unreferenced symlinks are not necessarily "broken"; one should not have to handle exceptions to work with them.

Conceptually filePathExist is concerned with the perspective of the current user environment, thus we consider the path to not exist if the user does not have the necessary permissions or if any other error occurs while attempting to get the FilePath status.

Synopsis

Documentation

data FileType Source #

Instances
Eq FileType Source # 
Instance details

Defined in System.SymbolicLink

Show FileType Source # 
Instance details

Defined in System.SymbolicLink

filePathExist :: FilePath -> IO Bool Source #

filePathExist works like fileExist except it doesn't follow symlinks.

fileType :: FilePath -> IO FileType Source #

Return the actual FileType of a FilePath without following symbolic links. This is unsafe; you should ensure you can get a FileStatus before evaluation.

fileTypeEither :: FilePath -> IO (Either IOError FileType) Source #

Like fileType but with errors wrapped for your protection.

fileTypeMaybe :: FilePath -> IO (Maybe FileType) Source #

Like fileType without errors because life is short.

getFileTypeFromStatus :: FileStatus -> FileType Source #

Remember that FileStatus can go stale and thus so can FileType.