reflex-process: reflex-frp interface for running shell commands

[ bsd3, frp, library, program, system ] [ Propose Tags ]

Run shell commands from within reflex applications and interact with them over a functional-reactive interface


[Skip to Readme]

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1.0.0, 0.1.0.1, 0.2.0.0, 0.2.1.0, 0.3.0.0, 0.3.1.0, 0.3.1.1, 0.3.1.2, 0.3.2.0, 0.3.2.1, 0.3.3.1
Change log ChangeLog.md
Dependencies base (>=4.12 && <4.14), bytestring (>=0.10 && <0.11), containers (>=0.5 && <0.7), data-default (>=0.7.1 && <0.8), process (>=1.6.4 && <1.7), reflex (>=0.6.2.4 && <0.7), reflex-process, reflex-vty (>=0.1.2.1 && <0.2), text (>=1.2.3 && <1.3), unix (>=2.7 && <2.8), vty (>=5.21 && <5.26) [details]
License BSD-3-Clause
Copyright 2020 Obsidian Systems LLC
Author Obsidian Systems LLC
Maintainer maintainer@obsidian.systems
Category System, FRP
Bug tracker https://github.com/reflex-frp/reflex-process/issues
Uploaded by abrar at 2020-01-30T17:43:00Z
Distributions NixOS:0.3.3.1
Reverse Dependencies 1 direct, 0 indirect [details]
Executables readme
Downloads 1913 total (39 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for reflex-process-0.2.1.0

[back to package description]

reflex-process

hackage hackage-ci travis-ci

Functional-reactive shell commands

This library provides a functional-reactive interface for running shell commands from reflex.

Example

The following example uses reflex-vty to run a terminal application that calls a shell command and displays the result:

> {-# LANGUAGE OverloadedStrings #-}
> import Reflex
> import Reflex.Process
> import Reflex.Vty
>
> import Control.Monad ((<=<))
> import Data.Default (def)
> import qualified Data.Set as Set
> import qualified Data.Text.Encoding as T
> import qualified Graphics.Vty.Input as V
> import qualified System.Process as P
>
> cmd :: P.CreateProcess
> cmd = P.proc "ls" ["-a"]
>
> main :: IO ()
> main = mainWidget $ do
>   exit <- keyCombos $ Set.singleton (V.KChar 'c', [V.MCtrl])
>   p <- createProcess cmd def
>   stdout <- foldDyn (flip mappend) "" $ _process_stdout p
>   boxStatic def $ col $ do
>     fixed 3 $ boxStatic def $ text "reflex-process"
>     fixed 3 $ text "Press Ctrl-C to exit."
>     fixed 1 $ text "stdout:"
>     stretch $ text $ T.decodeUtf8 <$> current stdout
>   pure $ () <$ exit