psibi/shell-conduit — explained in plain English
Analysis updated 2026-07-11 · repo last pushed 2020-06-20
Write deployment scripts that clone a repo, run a build, and restart a server with graceful error handling.
Automate system tasks using familiar Unix tools like ls, grep, and git from within typed Haskell code.
Build data-processing pipelines that mix shell commands with inline text transforms, CSV parsing, or HTTP fetching.
Write scripts that wait for a process to terminate before proceeding, avoiding painful Bash workarounds.
| psibi/shell-conduit | psibi/yesod-postgres | psibi/odbc-issue-49 | |
|---|---|---|---|
| Stars | 96 | 4 | 1 |
| Language | Haskell | Haskell | Haskell |
| Last pushed | 2020-06-20 | 2018-08-24 | 2022-04-26 |
| Maintenance | Dormant | Dormant | Dormant |
| Setup difficulty | moderate | moderate | moderate |
| Complexity | 3/5 | 3/5 | 1/5 |
| Audience | developer | developer | developer |
Figures from each repo's GitHub metadata at analysis time.
Requires familiarity with Haskell tooling like Stack or Cabal and the Conduit streaming library ecosystem.
shell-conduit lets you write shell scripts in Haskell instead of Bash. If you've ever found shell scripting frustrating because of brittle quoting rules, confusing error handling, or the difficulty of structuring anything beyond a simple linear sequence of commands, this library offers an alternative: you get the power of a real programming language while still being able to call familiar command-line tools like ls, grep, and git directly from your code. At a high level, the library scans your system's executable paths at compile time and automatically turns every available command-line program into a callable function in your code. You can then chain those commands together using a pipe operator, much like the | symbol in a regular shell script. You can also mix in data-processing steps from the broader Conduit ecosystem, letting you transform text, parse CSV files, or fetch data over HTTP inline with your shell commands. Results stream live between stages by default, so long-running commands can feed output to the next step in real time. This would appeal to Haskell developers who want to automate system tasks, build deployment scripts, or write build pipelines without dropping into Bash. For example, you could write a script that clones a git repository, runs a build script, and then restarts a server, all while handling failures gracefully. The README also shows a script that waits for a process to terminate before proceeding, which is the kind of fiddly logic that's painful to express in a traditional shell script. The project is explicitly experimental, so it's more of a proof-of-concept than a production tool. The notable design choice is how it blurs the line between calling system commands and writing functional code. You get compile-time type checking and the ability to use normal language constructs like conditionals and loops, while still working with the same Unix tools you already know.
A Haskell library that lets you write shell scripts with type safety and normal programming constructs instead of Bash, automatically turning every command-line program on your system into a callable function.
Mainly Haskell. The stack also includes Haskell, Conduit.
Dormant — no commits in 2+ years (last push 2020-06-20).
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.