summaryrefslogtreecommitdiff
path: root/src/Propellor/Property
diff options
context:
space:
mode:
authorJoey Hess2015-05-27 12:38:45 -0400
committerJoey Hess2015-05-27 12:38:45 -0400
commit626f1af56f12be63cd78fa4910c55453c23cf5a0 (patch)
tree201e7817c0c21a14d39a966a0249cb7ed3114f4b /src/Propellor/Property
parentd7ff70c7277f6a29fa608c8b1da1543c461a8bfc (diff)
Export CommandParam, boolSystem, safeSystem and shellEscape from Propellor.Property.Cmd, so they are available for use in constricting your own Properties when using propellor as a library.
Several imports of Utility.SafeCommand now redundant.
Diffstat (limited to 'src/Propellor/Property')
-rw-r--r--src/Propellor/Property/Apache.hs1
-rw-r--r--src/Propellor/Property/Chroot.hs1
-rw-r--r--src/Propellor/Property/Cmd.hs20
-rw-r--r--src/Propellor/Property/Cron.hs1
-rw-r--r--src/Propellor/Property/Debootstrap.hs1
-rw-r--r--src/Propellor/Property/Docker.hs1
-rw-r--r--src/Propellor/Property/Firewall.hs1
-rw-r--r--src/Propellor/Property/Git.hs1
-rw-r--r--src/Propellor/Property/Mount.hs1
-rw-r--r--src/Propellor/Property/OS.hs1
-rw-r--r--src/Propellor/Property/Obnam.hs1
-rw-r--r--src/Propellor/Property/Reboot.hs1
-rw-r--r--src/Propellor/Property/Service.hs1
-rw-r--r--src/Propellor/Property/SiteSpecific/GitHome.hs1
-rw-r--r--src/Propellor/Property/SiteSpecific/JoeySites.hs1
-rw-r--r--src/Propellor/Property/Ssh.hs1
-rw-r--r--src/Propellor/Property/Systemd.hs1
17 files changed, 16 insertions, 20 deletions
diff --git a/src/Propellor/Property/Apache.hs b/src/Propellor/Property/Apache.hs
index a7c7e690..fe81dcd8 100644
--- a/src/Propellor/Property/Apache.hs
+++ b/src/Propellor/Property/Apache.hs
@@ -4,7 +4,6 @@ import Propellor
import qualified Propellor.Property.File as File
import qualified Propellor.Property.Apt as Apt
import qualified Propellor.Property.Service as Service
-import Utility.SafeCommand
type ConfigFile = [String]
diff --git a/src/Propellor/Property/Chroot.hs b/src/Propellor/Property/Chroot.hs
index e56cb6ed..ec2b6679 100644
--- a/src/Propellor/Property/Chroot.hs
+++ b/src/Propellor/Property/Chroot.hs
@@ -19,7 +19,6 @@ import Propellor.Property.Chroot.Util
import qualified Propellor.Property.Debootstrap as Debootstrap
import qualified Propellor.Property.Systemd.Core as Systemd
import qualified Propellor.Shim as Shim
-import Utility.SafeCommand
import qualified Data.Map as M
import Data.List.Utils
diff --git a/src/Propellor/Property/Cmd.hs b/src/Propellor/Property/Cmd.hs
index 859302c8..23f1075b 100644
--- a/src/Propellor/Property/Cmd.hs
+++ b/src/Propellor/Property/Cmd.hs
@@ -1,11 +1,20 @@
{-# LANGUAGE PackageImports #-}
module Propellor.Property.Cmd (
+ -- * Properties for running commands and scripts
cmdProperty,
cmdProperty',
cmdPropertyEnv,
+ Script,
scriptProperty,
userScriptProperty,
+ -- * Lower-level interface for running commands
+ CommandParam(..),
+ boolSystem,
+ boolSystemEnv,
+ safeSystem,
+ safeSystemEnv,
+ shellEscape
) where
import Control.Applicative
@@ -40,15 +49,18 @@ cmdPropertyEnv cmd params env = property desc $ liftIO $ do
where
desc = unwords $ cmd : params
--- | A property that can be satisfied by running a series of shell commands.
-scriptProperty :: [String] -> Property NoInfo
+-- | A series of shell commands. (Without a leading hashbang.)
+type Script = [String]
+
+-- | A property that can be satisfied by running a script.
+scriptProperty :: Script -> Property NoInfo
scriptProperty script = cmdProperty "sh" ["-c", shellcmd]
where
shellcmd = intercalate " ; " ("set -e" : script)
--- | A property that can satisfied by running a series of shell commands,
+-- | A property that can satisfied by running a script
-- as user (cd'd to their home directory).
-userScriptProperty :: User -> [String] -> Property NoInfo
+userScriptProperty :: User -> Script -> Property NoInfo
userScriptProperty (User user) script = cmdProperty "su" ["--shell", "/bin/sh", "-c", shellcmd, user]
where
shellcmd = intercalate " ; " ("set -e" : "cd" : script)
diff --git a/src/Propellor/Property/Cron.hs b/src/Propellor/Property/Cron.hs
index d2feaf3c..e9bb93ac 100644
--- a/src/Propellor/Property/Cron.hs
+++ b/src/Propellor/Property/Cron.hs
@@ -4,7 +4,6 @@ import Propellor
import qualified Propellor.Property.File as File
import qualified Propellor.Property.Apt as Apt
import Propellor.Bootstrap
-import Utility.SafeCommand
import Utility.FileMode
import Data.Char
diff --git a/src/Propellor/Property/Debootstrap.hs b/src/Propellor/Property/Debootstrap.hs
index 5d6a8bed..f29ae56b 100644
--- a/src/Propellor/Property/Debootstrap.hs
+++ b/src/Propellor/Property/Debootstrap.hs
@@ -15,7 +15,6 @@ import qualified Propellor.Property.Apt as Apt
import Propellor.Property.Chroot.Util
import Propellor.Property.Mount
import Utility.Path
-import Utility.SafeCommand
import Utility.FileMode
import Data.List
diff --git a/src/Propellor/Property/Docker.hs b/src/Propellor/Property/Docker.hs
index 3b8751f3..fd7e37b2 100644
--- a/src/Propellor/Property/Docker.hs
+++ b/src/Propellor/Property/Docker.hs
@@ -48,7 +48,6 @@ import qualified Propellor.Property.File as File
import qualified Propellor.Property.Apt as Apt
import qualified Propellor.Property.Cmd as Cmd
import qualified Propellor.Shim as Shim
-import Utility.SafeCommand
import Utility.Path
import Utility.ThreadScheduler
diff --git a/src/Propellor/Property/Firewall.hs b/src/Propellor/Property/Firewall.hs
index 66292c8b..ab57b122 100644
--- a/src/Propellor/Property/Firewall.hs
+++ b/src/Propellor/Property/Firewall.hs
@@ -18,7 +18,6 @@ import Data.Char
import Data.List
import Propellor
-import Utility.SafeCommand
import qualified Propellor.Property.Apt as Apt
import qualified Propellor.Property.Network as Network
diff --git a/src/Propellor/Property/Git.hs b/src/Propellor/Property/Git.hs
index 0fc22616..48871b40 100644
--- a/src/Propellor/Property/Git.hs
+++ b/src/Propellor/Property/Git.hs
@@ -4,7 +4,6 @@ import Propellor
import Propellor.Property.File
import qualified Propellor.Property.Apt as Apt
import qualified Propellor.Property.Service as Service
-import Utility.SafeCommand
import Data.List
diff --git a/src/Propellor/Property/Mount.hs b/src/Propellor/Property/Mount.hs
index f4d10302..a081b1e7 100644
--- a/src/Propellor/Property/Mount.hs
+++ b/src/Propellor/Property/Mount.hs
@@ -1,7 +1,6 @@
module Propellor.Property.Mount where
import Propellor
-import Utility.SafeCommand
type FsType = String
type Source = String
diff --git a/src/Propellor/Property/OS.hs b/src/Propellor/Property/OS.hs
index 11fa6c82..5364456a 100644
--- a/src/Propellor/Property/OS.hs
+++ b/src/Propellor/Property/OS.hs
@@ -16,7 +16,6 @@ import qualified Propellor.Property.File as File
import qualified Propellor.Property.Reboot as Reboot
import Propellor.Property.Mount
import Propellor.Property.Chroot.Util (stdPATH)
-import Utility.SafeCommand
import System.Posix.Files (rename, fileExist)
import Control.Exception (throw)
diff --git a/src/Propellor/Property/Obnam.hs b/src/Propellor/Property/Obnam.hs
index da27e263..94b023f3 100644
--- a/src/Propellor/Property/Obnam.hs
+++ b/src/Propellor/Property/Obnam.hs
@@ -4,7 +4,6 @@ import Propellor
import qualified Propellor.Property.Apt as Apt
import qualified Propellor.Property.Cron as Cron
import qualified Propellor.Property.Gpg as Gpg
-import Utility.SafeCommand
import Data.List
diff --git a/src/Propellor/Property/Reboot.hs b/src/Propellor/Property/Reboot.hs
index 750968ff..d45969a8 100644
--- a/src/Propellor/Property/Reboot.hs
+++ b/src/Propellor/Property/Reboot.hs
@@ -1,7 +1,6 @@
module Propellor.Property.Reboot where
import Propellor
-import Utility.SafeCommand
now :: Property NoInfo
now = cmdProperty "reboot" []
diff --git a/src/Propellor/Property/Service.hs b/src/Propellor/Property/Service.hs
index 8da502f7..9cc010e8 100644
--- a/src/Propellor/Property/Service.hs
+++ b/src/Propellor/Property/Service.hs
@@ -1,7 +1,6 @@
module Propellor.Property.Service where
import Propellor
-import Utility.SafeCommand
type ServiceName = String
diff --git a/src/Propellor/Property/SiteSpecific/GitHome.hs b/src/Propellor/Property/SiteSpecific/GitHome.hs
index d6dce7c0..40f2ecd8 100644
--- a/src/Propellor/Property/SiteSpecific/GitHome.hs
+++ b/src/Propellor/Property/SiteSpecific/GitHome.hs
@@ -3,7 +3,6 @@ module Propellor.Property.SiteSpecific.GitHome where
import Propellor
import qualified Propellor.Property.Apt as Apt
import Propellor.Property.User
-import Utility.SafeCommand
-- | Clones Joey Hess's git home directory, and runs its fixups script.
installedFor :: User -> Property NoInfo
diff --git a/src/Propellor/Property/SiteSpecific/JoeySites.hs b/src/Propellor/Property/SiteSpecific/JoeySites.hs
index 89b8b46d..f9a0e0c9 100644
--- a/src/Propellor/Property/SiteSpecific/JoeySites.hs
+++ b/src/Propellor/Property/SiteSpecific/JoeySites.hs
@@ -15,7 +15,6 @@ import qualified Propellor.Property.User as User
import qualified Propellor.Property.Obnam as Obnam
import qualified Propellor.Property.Apache as Apache
import qualified Propellor.Property.Postfix as Postfix
-import Utility.SafeCommand
import Utility.FileMode
import Data.List
diff --git a/src/Propellor/Property/Ssh.hs b/src/Propellor/Property/Ssh.hs
index 37e65728..785f2787 100644
--- a/src/Propellor/Property/Ssh.hs
+++ b/src/Propellor/Property/Ssh.hs
@@ -24,7 +24,6 @@ import Propellor
import qualified Propellor.Property.File as File
import qualified Propellor.Property.Service as Service
import Propellor.Property.User
-import Utility.SafeCommand
import Utility.FileMode
import System.PosixCompat
diff --git a/src/Propellor/Property/Systemd.hs b/src/Propellor/Property/Systemd.hs
index 07cf81ee..78a99963 100644
--- a/src/Propellor/Property/Systemd.hs
+++ b/src/Propellor/Property/Systemd.hs
@@ -25,7 +25,6 @@ import qualified Propellor.Property.Chroot as Chroot
import qualified Propellor.Property.Apt as Apt
import qualified Propellor.Property.File as File
import Propellor.Property.Systemd.Core
-import Utility.SafeCommand
import Utility.FileMode
import Data.List