filepath alternatives and similar packages
Based on the "System" category.
Alternatively, view filepath alternatives based on common mentions on social networks and blogs.
xmobar9.9 8.7 filepath VS xmobarA minimalistic status bar
turtle9.9 4.5 filepath VS turtleShell programming, Haskell style
optparse-applicative9.9 3.8 filepath VS optparse-applicativeApplicative option parser
taffybar9.9 0.0 filepath VS taffybarA gtk based status bar for tiling window managers such as XMonad
bench9.9 0.0 filepath VS benchCommand-line benchmark tool
angel9.7 0.0 filepath VS angelProcess Monitoring/Management, Like Daemontools
process9.6 2.1 filepath VS processLibrary for dealing with system processes
unix9.6 0.0 filepath VS unixPOSIX functionality
nix-diff9.6 0.0 filepath VS nix-diffExplain why two Nix derivations differ
date-cache9.6 0.0 filepath VS date-cacheA fast logging system for Haskell
optparse-generic9.5 0.0 filepath VS optparse-genericAuto-generate a command-line parser for your datatype
nix-deploy9.5 0.0 filepath VS nix-deployDeploy software or an entire NixOS system configuration to another NixOS system
hapistrano9.5 6.5 filepath VS hapistranoDeploy tool for Haskell applications, like Capistrano for Rails
ghc-hotswap9.5 0.0 filepath VS ghc-hotswapExample code for how we swap compiled code within a running Haskell process.
envy9.4 0.0 filepath VS envy:angry: Environmentally friendly environment variables
directory9.3 2.1 filepath VS directoryPlatform-independent library for basic file system operations
pid19.2 0.0 filepath VS pid1Do signal handling and orphan reaping for Unix PID1 init processes
typed-process9.2 2.1 filepath VS typed-processAlternative API for processes, featuring more type safety
log9.0 2.7 filepath VS logStructured logging solution.
openssh-github-keys9.0 0.0 filepath VS openssh-github-keysControl SSH access to your servers via GitHub teams
clock9.0 0.0 filepath VS clockHigh-resolution clock functions: monotonic, realtime, cputime.
clifm9.0 0.0 filepath VS clifmCommand Line Interface File Manager
hail8.9 0.0 filepath VS hailA service for pull-based continuous deployment based on hydra.
hnix-store-core8.9 3.5 filepath VS hnix-store-coreHaskell implementation of the nix store API
ekg-core8.9 0.0 filepath VS ekg-coreLibrary for tracking system metrics
monky8.8 0.0 filepath VS monkyThe main repository for monky
logsink8.7 0.0 filepath VS logsinkA logging framework for Haskell
atomic-write8.7 0.0 filepath VS atomic-writeWrites files atomically in Haskell while preserving permissions
hobbes8.7 0.0 filepath VS hobbesA cross-platform file activity monitor
ekg-cloudwatch8.7 0.0 filepath VS ekg-cloudwatchCloudWatch stats for ekg
cef8.7 0.0 filepath VS cefA Haskell library for CEF (Commont Event Format)
unix-compat8.6 0.0 filepath VS unix-compatHaskell portable POSIX-compatibility layer
system-fileio8.6 0.0 filepath VS system-fileioContains the system-filepath and system-fileio packages
apotiki8.6 0.0 filepath VS apotikia faster debian repository
logger8.5 0.0 filepath VS loggerFast & extensible logging framework for Haskell!
language-puppet8.5 0.0 filepath VS language-puppetA library to work with Puppet manifests, test them and eventually replace everything ruby.
twitch8.4 0.0 filepath VS twitchA high level file watcher DSL
ascii-progress8.4 0.0 filepath VS ascii-progressA simple Haskell progress bar for the console. Heavily borrows from TJ Holowaychuk's Node.JS project
optparse-declarative8.4 0.0 filepath VS optparse-declarativeDeclarative command-line option parser
which8.4 0.0 filepath VS whichDetermine the full path to an executable.
hinotify8.3 0.0 filepath VS hinotifyHaskell binding to inotify
ekg-statsd8.3 0.0 filepath VS ekg-statsdFlush system metrics to statsd
executable-hash8.3 0.0 filepath VS executable-hashProvides the SHA1 hash of the program executable
plugins8.3 0.0 filepath VS pluginsDynamic linking and runtime evaluation of Haskell, and C, including dependency chasing and package resolution.
lxc8.2 0.0 filepath VS lxcHigh level Haskell bindings to LXC (Linux containers).
directory-contents8.2 0.0 filepath VS directory-contentsRecursively build a tree of directory contents, avoiding symlink cycles
hen8.2 0.0 filepath VS henHaskell bindings to Xen hypervisor interface
halfs8.2 0.0 filepath VS halfsThe Haskell File System: A file system implementation in Haskell
HFuse8.2 0.0 filepath VS HFuseHaskell bindings for the FUSE library
nix-derivation8.1 0.0 filepath VS nix-derivationParse and render *.drv files
Access the most powerful time series database as a service
Do you think we are missing an alternative of filepath or a related project?
filepath package provides functionality for manipulating
FilePath values, and is shipped with both GHC and the Haskell Platform. It provides three modules:
System.FilePath.Posixmanipulates POSIX/Linux style
/as the path separator).
System.FilePath.Windowsmanipulates Windows style
FilePathvalues (with either
/as the path separator, and deals with drives).
System.FilePathis an alias for the module appropriate to your platform.
All three modules provide the same API, and the same documentation (calling out differences in the different variants).
FilePath be an abstract data type?
The answer for this library is "no". While an abstract
FilePath has some advantages (mostly type safety), it also has some disadvantages:
- In Haskell the definition is
type FilePath = String, and all file-oriented functions operate on this type alias, e.g.
writeFile. Any abstract type would require wrappers for these functions or lots of casts between
Stringand the abstraction.
- It is not immediately obvious what a
FilePathis, and what is just a pure
String. For example,
- Often it is useful to represent invalid files, e.g.
/foo/*.txtprobably isn't an actual file, but a glob pattern. Other programs use
foo//barfor globs, which is definitely not a file, but might want to be stored as a
- Some programs use syntactic non-semantic details of the
FilePathto change their behaviour. For example,
foo/.are all similar, and refer to the same location on disk, but may behave differently when passed to command-line tools.
- A useful step to introducing an abstract
FilePathis to reduce the amount of manipulating
FilePathvalues like lists. This library hopes to help in that effort.
Most of the code is in
System/FilePath/Internal.hs which is
#include'd into both
System/FilePath/Windows.hs with the
IS_WINDOWS CPP define set to either
False. This Internal module is a bit weird in that it isn't really a Haskell module, but is more an include file.
The library has extensive doc tests. Anything starting with
-- > is transformed into a doc test as a predicate that must evaluate to
True. These tests follow a few rules:
- Tests prefixed with
Posix:are only tested against that specific implementation - otherwise tests are run against both implementations.
- Any single letter variable, e.g.
x, is considered universal quantification, and is checked with
Valid x =>appears at the start of a doc test, that means the property will only be tested with
The tests can be generated by
Generate.hs in the root of the repo, and will be placed in
TestGen.hs file is checked into the repo, and the CI scripts check that
TestGen.hs is in sync with what would be generated a fresh - if you don't regenerate
TestGen.hs the CI will fail.
.ghci file is set up to allow you to type
ghci to open the library, then
:go will regenerate the tests and run them.