Copyright | 2019 Emily Pillmore |
---|---|
License | BSD |
Maintainer | Emily Pillmore <emilypi@cohomolo.gy> |
Stability | Experimental |
Portability | TypeFamilies |
Safe Haskell | Safe |
Language | Haskell2010 |
This module provides the associated optics and combinators
for working with CmdSpec
objects. CmdSpec
consists of two
cases: a Shell command, which is a command to execute naively in the shell,
and a Raw command which is a command path together with its arguments.
CmdSpec
has two cases, and therefore a Traversal
into those two cases.
There is also a convenient Traversal
available for working with the arglist
of a Raw command and combinators for working with arguments monoidally.
We provide classy variants for all useful traversals
Synopsis
- _RawCommand :: Traversal' CmdSpec (FilePath, [String])
- _ShellCommand :: Traversal' CmdSpec String
- arguments :: Traversal' CmdSpec [String]
- class IsShell a where
- _Shell :: Traversal' a String
- class IsRaw a where
- _Raw :: Traversal' a (FilePath, [String])
- arguing :: String -> CmdSpec -> CmdSpec
Traversals
_RawCommand :: Traversal' CmdSpec (FilePath, [String]) Source #
A Traversal'
into the RawCommand
case of a CmdSpec
Examples:
>>>
RawCommand "/bin/ls" ["-l"] ^? _RawCommand
Just ("/bin/ls",["-l"])
>>>
RawCommand "/bin/ls" ["-l"] ^? _ShellCommand
Nothing
>>>
RawCommand "/bin/ls" ["-l"] ^. _RawCommand . _1
"/bin/ls"
>>>
RawCommand "/bin/ls" ["-l"] ^. _RawCommand . _2
["-l"]
_ShellCommand :: Traversal' CmdSpec String Source #
A Traversal'
into the ShellCommand
case of a CmdSpec
Examples:
>>>
ShellCommand "ls -l" ^? _ShellCommand
Just "ls -l"
>>>
RawCommand "/bin/ls" ["-l"] ^? _ShellCommand
Nothing
arguments :: Traversal' CmdSpec [String] Source #
Traversal'
into the arguments of a command
Examples:
>>>
RawCommand "/bin/ls" ["-l"] ^. arguments
["-l"]
Classy Traversals
class IsShell a where Source #
Classy Traversal'
into the shell command of a CmdSpec
_Shell :: Traversal' a String Source #
Classy Traversal'
into the raw command of a CmdSpec