blob: 0779c49fb407d2b94266e4d350966486468df370 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
[[!comment format=mdwn
username="joey"
subject="""comment 2"""
date="2016-06-13T20:23:37Z"
content="""
One easy way would be something like:
shellMonadProperty :: Control.Monad.Shell.Script Result -> Property UnixLike
But, I don't know if that would really be useful. The better use case for
shell-monad seems to be where things like `userScriptProperty` take a
`Script`, that is currently an alias for `String`. Since shell-monad can
generate a shell script, it would be easy to write:
shellMonad :: Control.Monad.Shell.Script () -> Script
Or, perhaps change userScriptProperty to accept either a stringy-Script or
a shell monad Script, via a type class. Then it could be used like this:
userScriptProperty (User "joey") $ do
cmd "echo" "hello"
cmd "rm" "/home/joey/something"
Turtle seems to not have its own monad but simply uses MonadIO. So seems
you can use Turtle in the implementation of propellor properties the same as
other IO actions. Which is great, it should be easy to use it if you want
to. Something like:
import Turtle.Prelude
myProperty :: Property UnixLike
myProperty = property "my property using turtle" $ liftIO $ do
echo "hello"
rm "/something"
return NoChange
But I don't think turtle can generate shell scripts like used by
`userScriptProperty`.
"""]]
|