summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess2014-03-31 00:43:28 -0400
committerJoey Hess2014-03-31 00:43:28 -0400
commit2383674638d14b18a668fa2fcd2689724b4ae4cc (patch)
treea9e0b6863ad909440e9d7d91b7dcd782882e90b9
parent88f876324450ea0d988ee7842cb5243133e05c94 (diff)
haddock improvemnts
-rw-r--r--Propellor.hs45
-rw-r--r--Propellor/PrivData.hs6
-rw-r--r--Propellor/Property/File.hs12
3 files changed, 48 insertions, 15 deletions
diff --git a/Propellor.hs b/Propellor.hs
index 5ee2f860..1ab2cbd7 100644
--- a/Propellor.hs
+++ b/Propellor.hs
@@ -1,11 +1,44 @@
--- | Pulls in lots of useful modules for building Properties.
+-- | Pulls in lots of useful modules for building and using Properties.
+--
+-- Propellor enures that the system it's run in satisfies a list of
+-- properties, taking action as necessary when a property is not yet met.
+--
+-- A simple propellor program example:
+--
+--
+--> import Propellor
+--> import Propellor.CmdLine
+--> import qualified Propellor.Property.File as File
+--> import qualified Propellor.Property.Apt as Apt
+-->
+--> main :: IO ()
+--> main = defaultMain getProperties
+-->
+--> getProperties :: HostName -> Maybe [Property]
+--> getProperties "example.com" = Just
+--> [ Apt.installed ["mydaemon"]
+--> , "/etc/mydaemon.conf" `File.containsLine` "secure=1"
+--> `onChange` cmdProperty "service" ["mydaemon", "restart"]]
+--> ]
+--> getProperties _ = Nothing
+--
+-- See config.hs for a more complete example, and clone Propellor's
+-- git repository for a deployable system using Propellor:
+-- git clone <git://git.kitenet.net/propellor>
-module Propellor (module X) where
+module Propellor (
+ module Propellor.Types
+ , module Propellor.Property
+ , module Propellor.Property.Cmd
+ , module Propellor.PrivData
-import Propellor.Types as X
-import Propellor.Property as X
-import Propellor.Property.Cmd as X
-import Propellor.PrivData as X
+ , module X
+) where
+
+import Propellor.Types
+import Propellor.Property
+import Propellor.Property.Cmd
+import Propellor.PrivData
import Utility.PartialPrelude as X
import Utility.Process as X
diff --git a/Propellor/PrivData.hs b/Propellor/PrivData.hs
index cf4840b9..27b3f77f 100644
--- a/Propellor/PrivData.hs
+++ b/Propellor/PrivData.hs
@@ -18,9 +18,9 @@ import Utility.Tmp
import Utility.SafeCommand
import Utility.Misc
-{- | Note that removing or changing field names will break the
- - serialized privdata files, so don't do that!
- - It's fine to add new fields. -}
+-- | Note that removing or changing field names will break the
+-- serialized privdata files, so don't do that!
+-- It's fine to add new fields.
data PrivDataField
= DockerAuthentication
| SshPrivKey UserName
diff --git a/Propellor/Property/File.hs b/Propellor/Property/File.hs
index befcc59d..02bf27c0 100644
--- a/Propellor/Property/File.hs
+++ b/Propellor/Property/File.hs
@@ -4,12 +4,12 @@ import Propellor
type Line = String
-{- | Replaces all the content of a file. -}
+-- | Replaces all the content of a file.
hasContent :: FilePath -> [Line] -> Property
f `hasContent` newcontent = fileProperty ("replace " ++ f)
(\_oldcontent -> newcontent) f
-{- | Ensures that a line is present in a file, adding it to the end if not. -}
+-- | Ensures that a line is present in a file, adding it to the end if not.
containsLine :: FilePath -> Line -> Property
f `containsLine` l = fileProperty (f ++ " contains:" ++ l) go f
where
@@ -17,13 +17,13 @@ f `containsLine` l = fileProperty (f ++ " contains:" ++ l) go f
| l `elem` ls = ls
| otherwise = ls++[l]
-{- | Ensures that a line is not present in a file.
- - Note that the file is ensured to exist, so if it doesn't, an empty
- - file will be written. -}
+-- | Ensures that a line is not present in a file.
+-- Note that the file is ensured to exist, so if it doesn't, an empty
+-- file will be written. -}
lacksLine :: FilePath -> Line -> Property
f `lacksLine` l = fileProperty (f ++ " remove: " ++ l) (filter (/= l)) f
-{- | Removes a file. Does not remove symlinks or non-plain-files. -}
+-- | Removes a file. Does not remove symlinks or non-plain-files.
notPresent :: FilePath -> Property
notPresent f = check (doesFileExist f) $ Property (f ++ " not present") $
makeChange $ nukeFile f